我有一个小问题。 目前我有一个片段。 分离时我想向用户显示您想要保存更改的内容。 但是我想在用户选择一个选项后调用super.onDetach()。我尝试在一个选项之后调用super.onDetach(),但后来我得到一个异常,即在分离时不调用super.onDetach()。有什么想法吗?
提前致谢
这是我的代码:
@Override
public void onDetach() {
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
if(attachProfiel){
FragmentProfiel.updateProfiel();
}
if(attachDiagnose){
FragmentDiagnose.updateDiagnose();
}
if(attachAndere){
FragmentAndere.updateAndere();
}
break;
case DialogInterface.BUTTON_NEGATIVE:
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage("Save changes?").setPositiveButton("Ja", dialogClickListener)
.setNegativeButton("Nee", dialogClickListener).show();
}
OnDestroyView:
@Override
public void onDestroyView() {
new ExitFragment(getActivity()).show(getFragmentManager(), "MyDialog");
super.onDestroyView();
}
答案 0 :(得分:2)
我建议您在DialogFragment()
方法中调用onBackPressed()
,然后要求用户保存首选项。如果您想要回收用户在片段中输入的数据,请在android中使用SharedPreference
。见http://developer.android.com/reference/android/content/SharedPreferences.html
答案 1 :(得分:1)
我会说你不应该这样做。这种移动设计并不安全。实现此目的的唯一方法是阻止Ui线程一段时间,直到用户按下对话框或固定时间到期为止。但后来假设当应用程序阻止用户接到电话时,甚至更糟的是,当对话框即将显示时,电话会进来。这将是一场噩梦。
解决此问题的最佳方法是定期(临时)保存屏幕状态,然后询问他在下一个片段或活动的onresume中有未保存的更改。为了让事情顺利运行,android确实需要能够在需要时关闭你的应用程序。如果你试图规避那种控制,那么它就是一个丑陋的混乱。