【发布时间】:2019-01-08 10:40:56
【问题描述】:
我有一个 BaseActivity,它具有以下流程,FragmentA -> Fragment B ->FinalActivity .现在我想要 backpress 并单击从 FinalActivity 到 FragmentA 的后退按钮。
来自 BaseActivity 我正在调用 FragmentA 之类的,
Fragment selectedFragment = FragmentA .newInstance();
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container_fragment, selectedFragment);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.addToBackStack("Some String");
transaction.commit();
从 FragmentA 我打电话给 FragmentB 喜欢,
Fragment selectedFragment = FragmentB.newInstance();
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container_fragment, selectedFragment);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.addToBackStack("Some String");
transaction.commit();
从FragmentB到FinalActivity我这样叫,
startActivityForResult(FinalActivity.newIntent(getActivity()), 1);
现在从 FinalActivity 后退按钮我想显示 FragmentA
帮助我如何导航。
【问题讨论】:
-
您可以在开始活动后尝试
popBackStack(),例如:if (getFragmentManager() != null) getFragmentManager().popBackStack();- 这应该删除您的 FragmentB 并离开 FragmentA。所以在用户从FinalActivity返回后,应该呈现FragmentA。 -
backbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //onBackpressed(); }});在 FinalActivity 这个函数中调用什么
-
在执行 startActivityForResult(FinalActivity.newIntent(getActivity()), 1);添加 getActivity().onBackpressed();
-
@Himeshgoswami 谢谢,成功了!
-
@AanchiDev 虽然@Himeshgoswami 回答有效,但这可能不是更好的方法。如果您在
startActivityForResult()之前执行onBackPressed(),那么您可能会在看到FinalActivity 之前看到FragmentA,但如果这并不重要对你来说,Himesh 的建议效果很好。
标签: android android-fragments fragment onbackpressed