作为胡安·佩德罗·马丁内斯(Juan Pedro Martinez)回答的附录,我认为在研究该主题时阐明一个具体问题(我曾经提出过的问题)会有所帮助。
如果您希望创建一个新的DialogFragment并拥有它,以便用户只能使用后退按钮将其取消,从而消除了过早取消片段的随机屏幕触摸,那么您将使用此代码。
在调用DialogFragment的任何代码中,都需要将cancelable设置设置为false,以使NOTHING消除该片段,不会产生杂乱的屏幕触摸等。
DialogFragment mDialog= new MyDialogFragment();
mDialog.setCancelable(false);
mDialog.show(getFragmentManager(), "dialog");
然后,在DialogFragment(在本例中为MyDaialogFragment.java)中,添加onResume覆盖代码以使对话框侦听“后退”按钮。当按下它时,将执行dismiss()关闭该片段。
@Override
public void onResume()
{
super.onResume();
getDialog().setOnKeyListener(new OnKeyListener()
{
@Override
public boolean onKey(android.content.DialogInterface dialog,
int keyCode,android.view.KeyEvent event)
{
if ((keyCode == android.view.KeyEvent.KEYCODE_BACK))
{
dismiss();
return true;
}
else return false;
}
});
现在,您的对话框将被调用,“ setCancelable”为false,这意味着没有任何东西(没有外部单击)可以取消并关闭它,并且(从对话框本身内部)仅允许返回按钮将其关闭。
甘巴特!