从backstack获取片段

时间:2015-08-21 11:21:33

标签: android android-fragments fragment

几乎无法从后台堆叠中获取碎片,甚至开始考虑保留单身可能不好的东西。 保存到这样的backstack并且所有时间都试图通过标签或其他东西给我错误。

Fragment fragment = UserProfileFragment.newInstance(null);
                        FragmentTransaction trans = getFragmentManager().beginTransaction();
                        trans.replace(FRAGMENT_PLACE_RESOURCES, fragment);
                        trans.addToBackStack("profile");
                        trans.commit();

它只是在这里返回null,所以我不能使用这个片段。没有日志。

Fragment fragment2 = getFragmentManager().findFragmentByTag("profile");

1 个答案:

答案 0 :(得分:3)

getFragmentManager().findFragmentByTag("tag")

仅在添加了具有特定标记的片段时使用,例如

fragmentTransaction.add(R.id.order_container,mProfileFragment,"profile");

fragmentTransaction.replace(R.id.order_container,mProfileFragment,"sometag");

然后你就可以通过标签找到这个片段了。

在您的情况下您要向Backstack添加一个事务,因此您将无法按标记找到该片段。你只是向backstack添加一个事务,它不是一个片段。此外,您的片段已从活动中删除并被销毁,因此您必须通过弹出backstack而不是按标签查找该片段来还原事务。 你必须致电

getFragmentManager().popBackStack("profile");

将该片段返回到活动并使其在屏幕上可见。