覆盖Dialog的OnBackPressed

时间:2012-04-07 02:42:56

标签: android

如何在对话框中专门覆盖后退按钮以完成整个活动,而不仅仅是对话框。

使用setOnCancelListener和setOnDismissListener不起作用,因为有时我只是关闭对话框而不关闭它背后的整个活动。

修改

谢谢Shubayu可能有效!

我还可以通过此功能访问对话框中的后退按钮。

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
    @Override
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK){
        finish();
        }
    return false;
    }
});

3 个答案:

答案 0 :(得分:0)

覆盖

  

public void onBackPressed()

活动的

并以你想要的方式放入其中。还可以在对话框中设置一个布尔值,该对话框在Activity的onBackPressed()中使用。如果布尔值为true,则运行onBackPressed()代码的禁用部分,否则不运行。

答案 1 :(得分:0)

  @Override  
    public boolean onKeyDown(int keyCode, KeyEvent event) {    
        if ((keyCode == KeyEvent.KEYCODE_BACK){        
        // your logic goes here   
            return true;    
        }    
        return super.onKeyDown(keyCode, event);
}

使用上面的代码::

答案 2 :(得分:0)

您可以使用:dialog.setOnCancelListener(.....) 首先设置dialog.setCancelable(true);

比你可以放在代码下面:

  dialog.setOnCancelListener(new DialogInterface.OnCancelListener()
{
    @Override
    public void onCancel(DialogInterface dialog)
    {
         // add code backpress 
    }
});