我使用DrawerNavigation来管理程序中的不同片段,并覆盖主Activity中的onBackPressed,以将片段中的onBackPressed用作此帖子:https://medium.com/@Wingnut/onbackpressed-for-fragments-357b2bf1ce8e
感谢丹尼尔Wilson,我可以在片段中使用onBackPressed,但是当我想在用户修改EditText而不保存后按下back按钮时显示警告。当前片段只是弹出回上一个片段,而警告显示在另一个片段上。我该如何更改它-在对话框调用中显示警告对话框?
下面是我的代码
我的对话框片段
public static class MyDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(getActivity())
.setMessage(R.string.unsaved_changes_dialog_msg)
.setPositiveButton(R.string.discard,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
myContext.getSupportFragmentManager().popBackStack();
}
}
)
.setNegativeButton(R.string.keep_editing, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User clicked the "Keep editing" button, so dismiss the dialog
// and continue editing the pet.
if (dialog != null) {
dialog.dismiss();
}
}
})
.create();
return alertDialog;
}
}
反压
@Override
public void onBackPressed() {
if (!mPetHasChanged) {
Log.i(TAG, "onBackPressed: + mPetHasNotChanged");
super.onBackPressed();
return;
}
FragmentManager fm = getFragmentManager();
MyDialogFragment dialogFragment = new MyDialogFragment ();
dialogFragment.show(fm, "Sample Fragment");
Log.i(TAG, "onBackPressed: ");
}
谢谢大家,
3条答案
按热度按时间vlju58qv1#
试试这个
li9yvcax2#
在Fragment中没有onBackPressed()方法,因此我们创建CallBackInterface并使用Activity的OnBackPressed()。请访问以下链接:希望它会对你有帮助。
sulc1iza3#
你可以使用活动的OnBackPressed(),当它调用时,显示你的对话框。在dismiss时添加监听器(使用自定义监听器IMHO)。根据选择继续你的代码。
就像@mehul说的,只要添加一个侦听器机制。