我有一个名为“容器”的布局的活动,其中片段在使用FragmentTransactions时被夸大
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
transaction.replace(R.id.container, SomeFragment.newInstance());
transaction.addToBackStack(null);
transaction.commit();
One Fragment在TabLayout中使用另外两个片段来膨胀另一个片段。这是通过TabLayout和ViewPager完成的。一切顺利,直到我从后台弹出它。
getSupportFragmentManager().popBackStack();
执行此操作时,将重新创建选项卡并调用所有生命周期方法。但是,他们没有内容。它们的布局似乎不会被夸大。
我有一个名为initUI(View v)的方法,在
中调用@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_tabs, container, false);
initUI(rootView);
return rootView;
}
它执行TabLayout的设置。
private void initUI(View rootView) {
pager = (ViewPager) rootView.findViewById(R.id.viewPagerCollected);
tabLayout = (TabLayout) getActivity().findViewById(R.id.tabs);
pager.setAdapter(new MyPagerAdapter(getActivity().getSupportFragmentManager()));
tabLayout.setupWithViewPager(pager);
tabLayout.setVisibility(View.VISIBLE);
}
同样,调用此方法但在弹出backstack时似乎没有做任何事情。
我在这里做错了什么?为什么即使正在调用onCreateView和initUI,片段也无法正确重新创建?
编辑:在我的TabsFragment中,每个片段都有一个RecyclerView。单击其中一个项目时,将打开另一个片段,向用户显示详细信息。
此处用户可以导航回来。执行此操作时,TabsFragment再次可见,但这次没有任何内容。看起来内部碎片这次没有膨胀。
答案 0 :(得分:0)
首先像这样添加到后面的堆栈......
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
transaction.replace(R.id.container, SomeFragment.newInstance());
transaction.addToBackStack("YOUR_TAG");
transaction.commit();
之后尝试popstackback()