2015-10-07 105 views
1

我有一个名为其中片段在使用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再次可见,但这次没有任何内容。似乎内在的碎片这一次没有被夸大。

+0

那你到底要 –

+0

得到什么,我做错了解释,并有片段正确重新创建。对不起,如果不够清楚。我会编辑我的问题,并使其更清楚... – Alex

+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()

+0

谢谢,但我已经这样做了。 (对不起,我发布之前删除了方法addToBackStack(null)。 – Alex

相关问题