Проблема PagerAdapter с фрагментом Android

У меня есть одна проблема с PagerAdapter, в которой, когда я загружаю в него TextView, он отлично работает, код ниже:

@Override
public Object instantiateItem(ViewGroup container, int position) {
    LayoutInflater inflater = (LayoutInflater) mActivity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.test, container, false);

    TextView tv = (TextView) view.findViewById(R.id.tvtest);
    tv.setText("" + position);

    container.addView(view);
    return view;
}

Но когда я использую Fragment вместо TextView, как в приведенном ниже коде, PagerAdapter загружает только первый фрагмент. Пожалуйста, помогите мне решить эту проблему.

@Override
public Object instantiateItem(ViewGroup container, int position) {

    LayoutInflater inflater = (LayoutInflater) mActivity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.test, container, false);

    MyFragment fragment = new MyFragment ();
    FragmentTransaction transaction = mActivity.getFragmentManager().beginTransaction();
    transaction.add(R.id.fragment_container, fragment).commit();

    container.addView(view);

    return view;
}

XML-код:

При использовании TextView

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tvtest"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="Test"
android:textSize="30sp" />

При использовании фрагмента

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />

Спасибо.


person Vikash Parajuli    schedule 19.08.2015    source источник
comment
эта ссылка может помочь вам stackoverflow.com/questions/19485848/   -  person King of Masses    schedule 19.08.2015
comment
Извините, я не использую FragmentPagerAdapter в своем вопросе, я использую PagerAdapter   -  person Vikash Parajuli    schedule 19.08.2015
comment
Вам может понадобиться ознакомиться с учебным пособием по ViewPager здесь. Это может вам помочь: stackoverflow.com/a/32072274/4843993   -  person Hussein El Feky    schedule 19.08.2015


Ответы (1)


Просто используйте FragmentPagerAdapter вместо PagerAdapter.

public static class MyPagerAdapter extends FragmentPagerAdapter {
    private static int NUM_ITEMS = 3;

    public MyPagerAdapter(FragmentManager fragmentManager) {
        super(fragmentManager);
    }

    // Returns total number of pages
    @Override
    public int getCount() {
        return NUM_ITEMS;
    }

    // Returns the fragment to display for that page
    @Override
    public Fragment getItem(int position) {
        switch (position) {
        case 0: // Fragment # 0 - This will show FirstFragment
            return FirstFragment.newInstance(0, "Page # 1");
        case 1: // Fragment # 0 - This will show FirstFragment different title
            return FirstFragment.newInstance(1, "Page # 2");
        case 2: // Fragment # 1 - This will show SecondFragment
            return SecondFragment.newInstance(2, "Page # 3");
        default:
            return null;
        }
    }

    // Returns the page title for the top indicator
    @Override
    public CharSequence getPageTitle(int position) {
        return "Page " + position;
    }

}
person kabindra    schedule 19.08.2015