ViewPager z wieloma instancjami fragmentów tej samej klasy

Próbuję utworzyć ViewPager, który zawiera 5 fragmentów. 5 fragmentów „kontenera”, więc każdy z nich zawiera 2 fragmenty. 4 pierwsze fragmenty mają ten sam układ i należą do tej samej klasy. Piąta jest z innej klasy i nie ma z tym żadnego problemu.

Problem polega na tym, że gdy uruchamia się aktywność, wydaje się, że działa tylko 1 fragment (ten w pozycji 0 w viewPager). Próbowałem zwrócić nowy Fragment () w pozycji 0 w moim PagerAdapter, ale kiedy to robię, to działa drugi fragment. (Pracując, mam na myśli wyświetlanie listy po lewej stronie, nadal nie zajmowałem się fragmentem szczegółów po prawej stronie)

Oto kod

CustomPagerAdapter.java

public class CustomPagerAdapter extends FragmentPagerAdapter{

public CustomPagerAdapter(FragmentManager fm) {
    super(fm);
}
public CustomPagerAdapter(FragmentManager fm, Context context) {
    super(fm);

}

@Override   
public Fragment getItem(int pos) {

    if(pos == 4)
        return new OtherContainerFragment();
    else
        return new ContainerFragment(pos);

}

@Override
public int getCount() {

    return 5;
}

ContainerFragment.java

public class ContainerFragment extends Fragment {
private int CONTAINER_TYPE;

public ContainerFragment(){

}

public ContainerFragment(int type){
    CONTAINER_TYPE = type;
}



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_container, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);


    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
    CustomListFragment frag = new CustomListFragment(CONTAINER_TYPE);

    ft.replace(R.id.replaceable_list, frag);

    ft.commit();

CustomListFragment.java

public class CustomListFragment extends SuperCustomListFragment{

private ArrayList<Model> mModels;
private int TYPE;


public CustomListFragment(){

}

public CustomListFragment(int type){
    TYPE = type;
}


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return super.onCreateView(inflater, container, savedInstanceState);
}


@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    mModels = new ArrayList<Model>();


     if(TYPE == AppConstants.FRAGMENT_TYPE_JOURNAL){
        mAdapter = AppUtils.getJournalListAdapter(getActivity(), mModels);
        new syncPapers().execute();
     }else if(TYPE == AppConstants.FRAGMENT_TYPE_MOVIES){
         mAdapter = AppUtils.getMoviesListAdapter(getActivity(), mModels);
         new syncMovies().execute();
     }


    if(mAdapter != null)
        mListView.setAdapter(mAdapter);  //mListView is defined in the superClass 

Oto stałe, których używam:

public class AppConstants {


public static final int FRAGMENT_TYPE_AGENDA = 0; //so Fragment at position 0 should be of type agenda
public static final int FRAGMENT_TYPE_NEWS = 1; // position 1 should be of type news
public static final int FRAGMENT_TYPE_MOVIES = 2; // ...
public static final int FRAGMENT_TYPE_JOURNAL = 3; // ...

}

I xml dla kontenera:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<LinearLayout
    android:id="@+id/replaceable_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</LinearLayout>

<LinearLayout
    android:id="@+id/replaceable_details"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:background="@drawable/background" >
</LinearLayout>

</LinearLayout>

Więc ten kod nie działa, wygląda na to, że lista po lewej stronie w pojemniku fragmentu jest zastępowana w każdym fragmencie, a tylko fragment w pozycji 0 go wyświetla. (Obecnie wyświetla listę z adapterem typu „JOURNAL”, ale powinna wyświetlić listę typu „AGENDA”.

-------------------- *ALE !...* --------------------

Jeśli tworzę różne pliki układu fragment_container i zapisuję warunki IF w onCreateView i onViewCreated w ContainerFragment.java, wszystko działa prawidłowo. Więc :

ContainerFragment.java

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle      savedInstanceState) {
if(CONTAINER_TYPE == AppConstants.FRAGMENT_TYPE_JOURNAL)
    return inflater.inflate(R.layout.fragment_container_journal, container, false);
else if(CONTAINER_TYPE == AppConstants.FRAGMENT_TYPE_MOVIES)
    return inflater.inflater(R.layout.fragment_container_movies, container, false);
else
    return super.onCreateView(LayoutInflater inflater, ViewGroup container, Bundle      savedInstanceState);
}


@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);


    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
    CustomListFragment frag = new CustomListFragment(CONTAINER_TYPE);

    if(CONTAINER_TYPE == AppConstants.FRAGMENT_TYPE_JOURNAL)
        ft.replace(R.id.replaceable_journal_list, frag);
    else if(CONTAINER_TYPE == AppConstants.FRAGMENT_TYPE_MOVIES)
        ft.replace(R.id.replaceable_movies_list, frag);
    else 
        return;

    ft.commit();

Myślę, że to dlatego, że w każdym fragmencie zastępuję LinearLayout tego samego ID? (replaceable_list) Myślałem, że możliwe jest współużytkowanie tego samego pliku układu dla każdego fragmentu i nie chciałem tworzyć 4 plików układu, które byłyby takie same. Ale wygląda na to, że muszę to zrobić? Czy czegoś tu brakuje?

Dziękuję za Twój czas,

questionAnswers(2)

yourAnswerToTheQuestion