setCancelable(false)和onBackPressed冲突

时间:2017-09-28 06:18:05

标签: android

我遇到了问题

我有一个不可取消的自定义对话框 这意味着这个自定义对话框只能在自定义对话框中按下按钮时关闭,所以它不会在背压上取消或点击外面

我尝试了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--");
}

1 个答案:

答案 0 :(得分:0)

经过搜索,我找到了一个解决方案,感谢这个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;
    }
};