【问题标题】:The override method onBackPressed doesn't work when showing popup window显示弹出窗口时,覆盖方法 onBackPressed 不起作用
【发布时间】:2016-10-29 07:43:42
【问题描述】:

我想在 android 中显示弹出窗口时处理后按事件。 我喜欢这样。 在片段中:

@Override
public boolean onBackPressed() {
    if (backPressStrategy == BACK_PRESS_PLAN_A) {
        if (guideDialog != null) {
            guideDialog.dismiss();
        }
        closeFlashPay(REQ_CLOSE_FLASH_PAY_AND_FINISH);
        return true;
    } else if (backPressStrategy == BACK_PRESS_PLAN_B) {
        if (guideDialog != null) {
            guideDialog.dismiss();
        }
        getActivity().finish();
        return true;
    } else {
        return false;
    }
}

在活动中,我确实喜欢这样

@Override
public void onBackPressed() {
     PayBaseFragment contentFragment = (PayBaseFragment) getSupportFragmentManager().findFragmentByTag(TAG_CONTENT_FRAGMENT);
     if (contentFragment != null && contentFragment.onBackPressed()) {
         return;
     }
     super.onBackPressed();
}

问题是,当我第一次按下返回按钮时,弹出窗口刚刚消失,并且没有调用覆盖 onBackPressed 方法。除非我按两次后退按钮。 我像这样显示我的弹出窗口

guideDialog.showAtLocation(getActivity().getWindow().getDecorView(), Gravity.CENTER, 0, 0);

感谢您的帮助

【问题讨论】:

  • 我认为该对话框正在使用后按作为取消。看看这个stackoverflow.com/questions/10346011/…
  • 我看到了这个链接,问题是我将popupwindow设置为可访问的。应该设置为假
  • 我不是 100% 确定您期望发生什么。在对话框中设置 onKey 监听器并在那里调用 closeFlashPay 方法

标签: android android-popupwindow


【解决方案1】:

你需要用这个来处理对话框的后退键:

dialog.setOnKeyListener(new Dialog.OnKeyListener() {
                        @Override
                        public boolean onKey(DialogInterface arg0, int keyCode,
                                             KeyEvent event) {
                            if (keyCode == KeyEvent.KEYCODE_BACK) {
                                dialog.dismiss();
                                // you can call your onBackPress here

                            } 
                            return true;
                        }
                    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    相关资源
    最近更新 更多