【问题标题】:Disabling the back button on an activity when a dialogfragment is shown显示对话框片段时禁用活动上的后退按钮
【发布时间】:2018-02-23 09:32:46
【问题描述】:
我有一个显示对话片段的活动。
我已经将可取消的 dialogfragment 设置为 false,但底层活动仍会捕获后退按钮按下。
我的基础活动已覆盖 onBackPressed 方法,但我不希望它在显示对话框片段时运行。
当显示对话框片段时如何禁用后退按钮?
如果显示 dialogfragment 并忽略后退按钮按下,我是否从活动 onBackPressed 方法中检查?
【问题讨论】:
标签:
android
android-activity
fragment
【解决方案1】:
你必须像这样尝试..
代码粘贴到您的活动中
当您显示dialogfragment 时,设置shouldAllowBack 为假,否则设置为真
@Override
public void onBackPressed() {
if (!shouldAllowBack) {
doSomething...;
} else {
super.onBackPressed();
}
}
否则
按照这个方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(!shouldAllowBack && keyCode==KeyEvent.KEYCODE_BACK) {
return false;
}
return super.onKeyDown(keyCode, event);
}
【解决方案2】:
在显示你的DialogFragment时设置isBackDisable = true
在你的 onBackPressed() 上:
@Override
public void onBackPressed() {
if (isBackDisable) return; // funtion will do nothing
// do something from here.
Log.e("back disabled",false); // if isBackDisable = false then log will be printed
}