如何禁用对话框活动中的后退按钮

时间:2014-01-20 05:36:11

标签: android popupwindow android-dialog

我有一个问题,我想在PopUpWindow(对话框)中处理后退按钮事件而不是活动。我实现了OnKeyListner,...但它无法正常工作

这是我的PopUpWindow

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

3 个答案:

答案 0 :(得分:2)

您需要覆盖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;
  }
});

您需要手动设置密钥监听器

答案 1 :(得分:0)

只需输入此代码:

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

}

事情应该适合你。如果你想专门在back_pressed上做一些事情,那么在这个方法中写下代码。

答案 2 :(得分:0)

你可以采取一种棘手的方式

为您的活动范围创建PopupWindow的对象。如 private PopupWindow localPopup;...并创建布尔标志以标识弹出窗口状态

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

private boolean actionOnPopupWindow(){
   if(isPopupWindowShowing){
       localPopup.dismiss();
       return false;
   }else
       return true;
}

从活动的onBackPress()方法处理弹出窗口,如下所示

@Override
public void onBackPressed() {
    if(actionOnPopupWindow()
       super.onBackPressd();
}