繁体   English   中英

片段返回导航

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM