Android 如何在对话框的“活动”中禁用“后退”按钮

Android 如何在对话框的“活动”中禁用“后退”按钮,android,popupwindow,android-dialog,Android,Popupwindow,Android Dialog,我有一个问题,我想在弹出窗口(对话框)而不是活动中处理后退按钮事件。我实现了OnKeyListner,。。。但它不起作用 这是我的弹出窗口 public class PopUp extends PopupWindow implements OnKeyListener{ ... @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { // TODO Auto-genera

我有一个问题,我想在弹出窗口(对话框)而不是活动中处理后退按钮事件。我实现了OnKeyListner,。。。但它不起作用

这是我的弹出窗口

public class PopUp extends PopupWindow implements OnKeyListener{
...
@Override
  public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    return false;
}

您需要覆盖
onKeyDown
事件

@Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
      return false;
    }
    return super.onKeyDown(keyCode, event);
  }
您需要在PopupWindow的内容视图上设置侦听器

PopupWindow.this.getContentView().setOnKeyListener(new OnKeyListener() {
  @Override
  public boolean onKey(View v, int keyCode, KeyEvent event) {
    return false;
  }
});
您需要手动设置密钥侦听器

只需输入以下代码:

@Override
public void onBackPressed() {
    // Do Here what ever you want do on back press;

}

事情应该对你有用。如果你想在后面做一些特别的事情,那么在这个方法中写下代码。

你可以按照一个巧妙的方法来做

为活动范围创建PopupWindow的对象。作为
private PopupWindow localPopup
并创建布尔标志以标识popupwindow状态

创建一个私有方法来处理popupwindow,如下所示

private boolean actionOnPopupWindow(){
   if(isPopupWindowShowing){
       localPopup.dismiss();
       return false;
   }else
       return true;
}
@Override
public void onBackPressed() {
    if(actionOnPopupWindow()
       super.onBackPressd();
}
按如下方式处理活动的onBackPress()方法中的弹出窗口

private boolean actionOnPopupWindow(){
   if(isPopupWindowShowing){
       localPopup.dismiss();
       return false;
   }else
       return true;
}
@Override
public void onBackPressed() {
    if(actionOnPopupWindow()
       super.onBackPressd();
}

不工作是什么意思?您在哪里设置了KeyListener()?是否在活动中显示此弹出窗口?如果是,请重写Activity的onBackPressed()方法,并在PopupWindow中调用要处理的相关代码。。。不要调用super.onBackPressed()此处刚刚更新了我的答案,我认为OP没有设置侦听器。感谢您的建议,我尝试过这样做,但无法覆盖onKeyDown。您正在实现
OnKeyListener
接口。是否在PopupWindow实例上调用setOnKeyListener?