Я использую DrawerNavigation для управления различными фрагментами в программе, а также перезаписываю onBackPressed в основном упражнении для использования onBackPressed во фрагменте, как в этом сообщении: https://medium.com/@Wingnut/onbackpressed-for-fragments-357b2bf1ce8e
Спасибо Дэниелу Уилсону, что я могу использовать onBackPressed во Fragment, но когда я хочу отобразить предупреждение, когда пользователь нажал кнопку назад после изменения EditText без сохранения. Текущий фрагмент просто возвращается к предыдущему, а на другом фрагменте отображается предупреждение. Как бы я изменил это - Отображение диалогового окна оповещения о вызове диалога?
Вот мой код
MyDialogFragment
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;
}
}
onBackPressed
@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: ");
}
Спасибо всем,