【问题标题】:setCancelable(false) and onBackPressed conflictsetCancelable(false) 和 onBackPressed 冲突
【发布时间】:2018-03-09 18:54:03
【问题描述】:

我有问题

我有一个不可取消的自定义对话框 这意味着此自定义对话框只有在自定义对话框内按下按钮时才能关闭,因此它不会在按下或在外部单击时取消

我尝试了setCancelable(false) 并且它可以工作,但是在我的活动中我有一个 onBackPressed 并且每当我的不可取消对话框显示 onBackPressed 在我单击返回按钮时不会触发,因为我认为它们冲突

他们有解决方案吗?

编辑:目的是我希望用户单击确定按钮,或在自定义对话框中跳过,这意味着在继续下一个活动之前需要此对话框

也在 onBackPressed 中,因为每当用户按下时我都在使用片段,它会更改为上一个片段

抱歉没有解释

我的代码是这样的

对话框

dialog_welcome_navigation = DialogUtils.showCustomDialog(context, R.layout.dialog_welcome_navigation);
dialog_welcome_navigation.setCancelable(false); // disable closing dialog with back pressed
dialog_welcome_navigation.setCanceledOnTouchOutside(true);

和 onBackPressed

@Override
public void onBackPressed(){
    Log.d("TAG", "--back--");
}

【问题讨论】:

  • 为什么要在添加不可取消的对话框时触发 onBackPressed?
  • 是的,我想要....
  • @Beginner 你在你的onBackPressed() 中尝试过dialog.dismiss();
  • dialog_welcome_navigation.setCancelable(false);禁用后按..您只能在按下某些东西时关闭对话框
  • @Beginner 是的,我看到了你的答案。很高兴你找到了你想要的:)

标签: android


【解决方案1】:

搜索后,由于这个 SO 答案,我找到了解决方案

https://stackoverflow.com/a/25251122/3481654

我在对话框中添加了一个 setOnKeyListener

dialog_welcome_navigation.setOnKeyListener(dialogWelcomeNavigationOnKey);

private DialogInterface.OnKeyListener dialogWelcomeNavigationOnKey = new DialogInterface.OnKeyListener() {
    @Override
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
        if (keyCode == android.view.KeyEvent.KEYCODE_BACK) {

            dialog_welcome_navigation.dismiss();

            // move other fragment

            return true;
        }
        return false;
    }
};

【讨论】:

猜你喜欢
  • 2020-06-13
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-27
  • 2012-09-10
  • 2012-08-24
  • 2021-03-06
相关资源
最近更新 更多