您的位置:首页 > 其它

应用的退出形式,双击返回键退出和对话框询问退出

2016-04-24 07:52 399 查看
布局就不写了,在MainActivity.class中

 

方法一:双击返回按钮退出应用程序

package com.example.yuxue.dnlearnalertdialog;
public class MainActivity
extends AppCompatActivity {

    @Override
    protected void
onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

//定义一个计时的变量

    private long exitTime=0;

    //获取当前按钮的函数
    @Override
    public boolean
onKeyDown(int keyCode, KeyEvent event) {

       
        //双击返回按钮退出应用程序
        //判断按下的是返回键并且是按下的动作(不是长按或其他)
        if
(keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {

            //判断按钮按下后的当前时间比原来的时间的差大于两秒
            if
(System.currentTimeMillis()-exitTime>2000) {

                Toast.makeText(MainActivity.this,
"双击退出!", Toast.LENGTH_SHORT).show();

                exitTime=System.currentTimeMillis();

            }else {//小于两秒就退出

                finish();

                System.exit(0);

            }

            return true;

        }

        return super.onKeyDown(keyCode, event);

    }

  }

 

 

 

方法二:对话框的形式退出

 

package com.example.yuxue.dnlearnalertdialog;
public class MainActivity
extends AppCompatActivity {

    @Override
    protected void
onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

    //获取当前按钮的函数
    @Override
    public boolean
onKeyDown(int keyCode, KeyEvent event) {

        //对话框的形式退出
        if
(keyCode == KeyEvent.KEYCODE_BACK) {

            AlertDialog.Builder builder = new
AlertDialog.Builder(this);

            builder.setTitle("提示退出");

            builder.setMessage("你真的确认退出吗?");

            builder.setPositiveButton("确认",
listener);

            builder.setNegativeButton("取消",
listener);

            builder.show();

        }
        return super.onKeyDown(keyCode, event);

    }

    //匿名内部类    对话框的点击事件
    private
DialogInterface.OnClickListener listener
= new DialogInterface.OnClickListener() {

        @Override
        public void
onClick(DialogInterface dialog, int
which) {

            switch (which) {

                case DialogInterface.BUTTON_POSITIVE:

                    finish();//  关闭本Activity
                    //两种方法关闭对话框dialog.cancel(); 或 dialog.dismiss();
                    dialog.dismiss();

                    break;

                case DialogInterface.BUTTON_NEGATIVE:

                    dialog.cancel();

                    break;

            }

        }

    };
}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: