只有在第一次单击选项卡时才会触发FragmentPagerAdapter类

时间:2012-12-31 15:01:48

标签: android android-viewpager fragmentpageradapter

我正在尝试开发基于标签的应用程序。每个标签都有其片段。其中一个有ViewPager,ViewPager有自己的页面。我通过在这个viewpager中滚动来移动到另一个。

当我第一次打开应用程序时,没有问题。但是,当我从此选项卡移动并再次访问它时,它不显示viewpager内容,它不会触发FragmentPagerAdapter类。

标签A - 标签B - 标签C

Tab C Fragment具有ViewPage。

ViewPage有自己的页面。

public class FragmentC extends Fragment {

public static final String ARG_SECTION_NUMBER = "section_number";
 static ViewPager C_mViewPager; 
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {


    C_mViewPager = (ViewPager)inflater.inflate(R.layout.fragmentC, container,false);
             C_SectionsPagerAdapter mC_PagerAdapter=new C_SectionsPagerAdapter(MainActivity.fragmentManagerv4);
             C_mViewPager.setAdapter(mC_PagerAdapter);


 return C_mViewPager;

}
public class C_SectionsPagerAdapter extends FragmentPagerAdapter {


    public C_SectionsPagerAdapter (FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        Fragment fragment = null ;
         Bundle args;
        switch (i) {
        case 0:

            fragment=new A_SubFragment();
            break;

        case 1:

            fragment = new B_SubFragment();
            break;

        case 2:

        fragment = new C_SubFragment();
        break;

        case 3:

        fragment = new D_SubFragment();
        break;



}
        return fragment;
    }

    @Override
    public int getCount() {
        return 4;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0: return getString(R.string.title_section1).toUpperCase();
            case 1: return getString(R.string.title_section2).toUpperCase();
            case 2: return getString(R.string.title_section3).toUpperCase();
            case 3: return getString(R.string.title_section4).toUpperCase();

        }
        return null;
    }
}
public static class A_SubFragment extends Fragment {


    public A_SubFragment() {
    }

    public static final String ARG_SECTION_NUMBER = "section_number";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        RelativeLayout theLayout=(RelativeLayout)inflater.inflate(R.layout.a_sub_fragment, container,false);
//...
 return theLayout;}}
} 

片段C;

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" />

1 个答案:

答案 0 :(得分:0)

我得到了答案,我使用了FragmentStatePagerAdapter而不是FragmentPagerAdapter