[英]fragments back navigation
我解释以下情况:
活动1(片段1)->活动1(片段2)->活动1(片段3)->活动2(片段4)(确定按钮)
如果我在活动2中单击fragment4上的“确定”按钮,则应落在Activity1(fragment2)上,然后在片段2上单击“后退”按钮,则应落在fragment1上。
我尝试了以下代码:
activity?.supportFragmentManager?.popBackStack()
但这是行不通的。 有关如何解决此问题的任何帮助或建议。 您可能会问为什么我在这里使用很多片段,但是我真的没有其他选择。
当您在Activity2(fragment4)
单击“ OK
按钮时,只需在调用Activity1
意图之前将条目放置在sharedPreference
,如下所示:
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(key, "1");
editor.commit();
然后调用您的Activity1
:
Intent Activity1 = new Intent(getActivity(), Activity1.class);
startActivity(Activity1);
现在在Activity1
,在设置contentview之前,只需检查共享首选项中是否存储了值1
的变量key
。 如果它包含值1
,则将fragment2加载到框架布局frm
。 像这样:
sharedPreferences = getActivity().getSharedPreferences(mypreference, Context.MODE_PRIVATE);
if (sharedPreferences.contains(city)) {
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frm,new fragment2()).addToBackStack(null).commit();
}
正常调用此活动时,共享首选项的key
值不会为1
,因此fragment1将作为常规流加载。
现在,当您从此处移至下一个片段时,只需将0
存储在共享首选项的key
变量中即可。 这可以在完成onDetach()
的方法fragment2
同样要回到fragment1,您可以按照此答案获取更详细的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.