我有一个问题,我想在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;
}
答案 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();
}