У меня есть два фрагмента.
1) Фрагмент только с TextView(OneFragment)
2) Фрагмент с представлением переработчика, содержимое которого заполняется в onCreateView() фрагмента (два фрагмента)
В классе Activity я использую viewPager для управления этими фрагментами!!
Однако я столкнулся с проблемой.
Метод onCreateView() объекта TwoFragment вызывается при первой загрузке активности! Когда я перехожу к другим фрагментам и возвращаюсь обратно к двум фрагментам, метод onCreateView() не вызывается.
Вместо того, чтобы показывать мне recyclerView, он отображает пустой экран! Однако, когда я меняю ориентацию устройства! Вызывается onCreateView(), и список заполняется!
Я хочу, чтобы он показывал TwoFragment, возвращаясь к нему.
Однако у OneFragment нет проблем с этим! Каждый раз, когда я возвращаюсь к нему, отображается обычный большой текстовый вид!
Вот код для моего адаптера ViewPager
class ViewPagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getItemPosition(Object object){
// return PagerAdapter.POSITION_NONE;
Fragment f = (Fragment) object;
for(Fragment frag: mFragmentList){
return frag.getTagInt();
}
return FragmentStatePagerAdapter.POSITION_NONE;
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
public void clearAll(){
mFragmentList.clear();
mFragmentTitleList.clear();
notifyDataSetChanged();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
И я установил адаптер ViewPager следующим образом:
private void setupViewPager(ViewPager viewPager,int choice) {
if(choice == 1){
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.clearAll();
adapter.addFragment(new OneFragment(), "One");
adapter.addFragment(new TwoFragment(), "Two");
viewPager.setAdapter(adapter);
}
else{
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.clearAll();
adapter.addFragment(new OneFragment(), "One");
adapter.addFragment(new OneFragment(), "Two");
viewPager.setAdapter(adapter);
}
}
и вот мой предыдущий getItemId()
@Override
public int getItemPosition(Object object){
// return PagerAdapter.POSITION_NONE;
Fragment f = (Fragment) object;
for(int i=0;i<getCount();i++){
Fragment fragment = getItem(i);
if(f.equals(fragment)){
return i;
}
}
return FragmentStatePagerAdapter.POSITION_NONE;
}
Любая помощь очень ценится! Потому что я немного застрял после посещения Интернета и stackOverflow!!