我有一个名为其中片段在使用FragmentTransactions片段popBackStack后不重新创建()
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
transaction.replace(R.id.container, SomeFragment.newInstance());
transaction.addToBackStack(null);
transaction.commit();
一个片段与膨胀在TabLayout两个片段的另一种片段膨胀“容器”布局一个活动。这是通过TabLayout和ViewPager完成的。一切都很好,直到我从后台弹出它。
getSupportFragmentManager().popBackStack();
当我这样做时,标签被重新创建并调用所有的生命周期方法。但是,他们没有内容。他们的布局似乎不会被夸大。
我有一个名为initUI(视图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);
}
同样,这个方法被调用,但在弹出后台时似乎没有做任何事情。
我在这里做错了什么?为什么即使onCreateView和initUI被调用,Fragment也不能正确重新创建?
编辑:在我的TabsFragment中,每个片段都有一个RecyclerView。点击其中一个项目时,另一个片段打开,向用户显示详细信息。
在这里,用户可以导航回来。当这样做时,TabsFragment再次可见,但这次没有任何内容。似乎内在的碎片这一次没有被夸大。
那你到底要 –
得到什么,我做错了解释,并有片段正确重新创建。对不起,如果不够清楚。我会编辑我的问题,并使其更清楚... – Alex
它不够清楚 –