不立即分离片段

时间:2014-05-06 15:40:32

标签: android android-fragments detach

我有一个小问题。 目前我有一个片段。 分离时我想向用户显示您想要保存更改的内容。 但是我想在用户选择一个选项后调用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();

}

2 个答案:

答案 0 :(得分:2)

我建议您在DialogFragment()方法中调用onBackPressed(),然后要求用户保存首选项。如果您想要回收用户在片段中输入的数据,请在android中使用SharedPreference。见http://developer.android.com/reference/android/content/SharedPreferences.html

答案 1 :(得分:1)

我会说你不应该这样做。这种移动设计并不安全。实现此目的的唯一方法是阻止Ui线程一段时间,直到用户按下对话框或固定时间到期为止。但后来假设当应用程序阻止用户接到电话时,甚至更糟的是,当对话框即将显示时,电话会进来。这将是一场噩梦。

解决此问题的最佳方法是定期(临时)保存屏幕状态,然后询问他在下一个片段或活动的onresume中有未保存的更改。为了让事情顺利运行,android确实需要能够在需要时关闭你的应用程序。如果你试图规避那种控制,那么它就是一个丑陋的混乱。