碎片中的滑动标签第二次出现故障



我有一个MainActivity,它包含一个滑动抽屉菜单和一个FragmentContainer切换片段。

我有一个名为History的Fragment,它的布局是这样的

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical">
    <com.astuetz.PagerSlidingTabStrip
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:background="@color/colorPrimary"
        android:textColor="#FFFFFF"
        app:pstsIndicatorColor="#FFFFFF" />
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/tabs" />
</RelativeLayout>

类是这样的

public class HistoryFragment extends Fragment {
    public HistoryFragment() {
        // Required empty public constructor
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_history, container, false);

        // Initialize the ViewPager and set an adapter
        ViewPager pager = (ViewPager) view.findViewById(R.id.pager);
        pager.setAdapter(new PagerAdapter(getActivity().getSupportFragmentManager()));
        // Bind the tabs to the ViewPager
        PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) view.findViewById(R.id.tabs);
        tabs.setViewPager(pager);
        return view;
    }
    class PagerAdapter extends FragmentPagerAdapter {
        private final String[] TITLES = {"Last Transaction", "History"};
        public PagerAdapter(FragmentManager fm) {
            super(fm);
        }
        @Override
        public CharSequence getPageTitle(int position) {
            return TITLES[position];
        }
        @Override
        public int getCount() {
            return TITLES.length;
        }
        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    return new LastTransaction();
                case 1:
                    return new AboutFragment();
            }
            return null;
        }
    }

}

这个历史页面第一次从NavigationSlider菜单调用时工作良好。历史记录页包含两个滑动选项卡和两个片段。这些都是第一次显示,一切正常。

当第二次或之后调用它们时,问题就发生了。没有错误显示,布局被加载,滑动选项卡被显示,但它们的片段没有显示,并且滑块出现故障。

这个问题的原因可能是什么?我试图使用不同的方法来实现滑块片段,按照这个StackOverflow的答案。还是同样的问题。

replace

pager.setAdapter(new PagerAdapter(getActivity().getSupportFragmentManager()));


pager.setAdapter(new PagerAdapter(getActivity().getChildFragmentmanager()));

原因:

CHILD FragmentManager是处理它被添加到的片段中包含的片段的。

最新更新