我希望应用程序在用户按下后退按钮时显示警告消息,如果用户选择“是”,它将返回。我在导航图片段中。
我在堆栈溢出中搜索了很多次并尝试过:
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Save Or Not");
builder.setMessage("Do you want to save this? ");
builder.setPositiveButton("Save", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
/*Go back:-I dont know how*/
}
});
builder.setNegativeButton("Discard",null);
builder.show();
}
但它显示给出者错误:方法不会覆盖其超类中的方法
编辑:
我想在导航图片段中设置 onBackPressedListener(手机后退按钮)
使用 Fragments 1.1.0(目前处于 alpha 版本)时,您可以按照提供自定义后退导航文档 https://developer.android.com/guide/navigation/navigation-custom-back,它展示了如何注册OnBackPressedCallback https://developer.android.com/reference/androidx/activity/OnBackPressedCallback,这允许您注册onBackPressed()
来自 Fragment 内的回调:
public class MyFragment extends Fragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// This callback will only be called when MyFragment is at least Started.
OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
@Override
public void handleOnBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Save Or Not");
builder.setMessage("Do you want to save this? ");
builder.setPositiveButton("Save", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Save your content
save();
// Then pop
NavHostFragment.findNavController(MyFragment.this).popBackStack();
}
builder.setNegativeButton("Discard",null);
builder.show();
});
}
});
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)