2

大家好,我想拦截我的主页按钮。
我想要的是,每当我按下主页按钮时,我都想显示一个警报对话框,提示您确定要退出。如果是,则完成活动,否则什么也不做。我必须知道,
每当我们按下 Home 按钮时,都会按顺序执行以下回调。

onSaveInstanceState(捆绑 outState)

暂停()

停止()

所以我有 overRide onSaveInstanceState 方法并在那里设置我的警报对话框代码,但它给了我对话框上的异常。请朋友帮忙。指导我一个律...关于它。

更新:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
boolean flag = displayAlertDialog();
        if(flag){
             this.finish();
         super.onSaveInstanceState(savedInstanceState);
        }
}  

displayAlertDialog 方法:

private boolean isExit = false;
public boolean displayAlertDialog()
    {
        //final boolean flag=true;
        int a = 0;
        AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
        alt_bld.setMessage("Are you sure you want to Exit?")
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                isExit = true;
            }

        })
        .setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                isExit = false;
                dialog.cancel();
            }
        });
        alt_bld.show();
    return isExit;

    }
4

3 回答 3

3

您无法在主页按钮上打开对话框。但是您可以通过用户选择主页或您的活动等操作来打开主页按钮上的任何活动。

于 2011-05-19T05:49:02.790 回答
1

当按下 HOME 键时,AFAIK KeyCode.KEYCODE_HOME 永远不会传播到 Activty/Dialog,在框架中拦截 HOME 键以保证为“android.intent.category.HOME”注册的主屏幕/活动始终成为焦点。

如果在应用程序中允许拦截 HOME 键,则恶意应用程序可能会阻止用户退出应用程序并使用电话功能。

于 2011-05-19T06:34:22.470 回答
0

试试这个小伙伴......

 @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if ((keyCode == KeyEvent.KEYCODE_HOME)) {    
         Log.d(this.getClass().getName(), "home button pressed");   
      }  
       return super.onKeyDown(keyCode, event);
     } 
于 2011-05-19T05:50:53.673 回答