Android 如何在对话框的“活动”中禁用“后退”按钮
我有一个问题,我想在弹出窗口(对话框)而不是活动中处理后退按钮事件。我实现了OnKeyListner,。。。但它不起作用 这是我的弹出窗口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
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?