请不要将其标记为重复项,因为过去的问题无法解决我的问题。
我已经尝试过
@Override
onBackPressed(){
//do nothing
}
但是它无法解决我的问题。
我对输出的期望是,如果用户按回,则他/她将无法执行此操作,因为禁用了按回,并且应该显示一个对话框。
这是我想出的,来自适配器:
public void onBackPressed() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
alertDialog.setTitle("Restart Progress");
alertDialog.setMessage("Are you sure you want to restart all the progress?");
alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(context, NavDrawer.class);
context.startActivity(intent);
}
});
alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alertDialog1 = alertDialog.create();
alertDialog1.show();
}
在我的活动班级中,这是:
@Override
public void onBackPressed() {
weeklyExerciseAdapter2.onBackPressed();
super.onBackPressed();
}
答案 0 :(得分:2)
在您的 activity
中覆盖如下的onBackPressed
方法
@Override
public void onBackPressed(){
if(fragmentManager.findFragmentByTag("YOUR_BACK_BTN_DISABLE_FRAG_TAG") instanceof MYFragment){
//do nothing
} else {
super.onBackPressed()
}
}
答案 1 :(得分:1)
有种骇人听闻的解决方案,但您可以清除后栈。 如果您使用的是片段管理器,请在片段中尝试以下操作:
FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}
或
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
两者都应该起作用。
注意:这不会禁用“后退”按钮,用户根本无法进入上一个片段。