У меня есть: 1) Основное действие, содержащее ViewPager / TabLayout.В каждой вкладке есть фрагмент.2) Вторая вкладка / фрагмент содержит другой ViewPager / TabLayout (как показано на изображениях ниже).Конечно, каждая из этих страниц представляет собой отдельный отдельный фрагмент.
Итак, мне нужно сохранять обновление основных пейджеров, когда пользователь переходит на другую вкладку.Проблема в том, что когда я в первый раз отображаю эту вторую вкладку, она работает должным образом, однако, когда я делаю это во второй раз, кажется, что TabLayout не имеет вкладок (я могу провести пальцем, но он не фиксируется ни в одном тексте) (см. Изображение 2),Конечно, содержимое также не отображается.
Вот код для адаптера.Я уточню вопрос, если потребуется больше кода.
public class PeopleFragment extends BaseFragment {
View root_view;
private ViewPager viewPager;
private TabLayout tabLayout;
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
if (view != null) {
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null)
parent.removeView(view);
}
try {
view = inflater.inflate(R.layout.fragment_people, container, false);
} catch (InflateException e) {
/* fragment is already there, just return view as it is */
}
root_view = view;
initUI(view);
initEvent(view);
return root_view;
}
@Override
void initUI(@Nullable final View view){
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.ppl_tabs);
tabLayout.addTab(tabLayout.newTab().setText("Friends"));
tabLayout.addTab(tabLayout.newTab().setText("All Users"));
//tabLayout.addTab(tabLayout.newTab().setText("Ranking"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
this.tabLayout = tabLayout;
final ViewPager viewPager = (ViewPager) view.findViewById(R.id.ppl_viewpager);
final PagerPeopleAdapter adapter = new PagerPeopleAdapter
(getActivity().getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
this.viewPager = viewPager;
}
@Override
void initEvent(@Nullable final View view){
// Do nothing
}
@Subscribe
public void onDestroyView(){
viewPager.invalidate();
super.onDestroyView();
}
@Subscribe
public void onConfirmedFriendsReceived(ConfirmedFriendsEvent event){
// Do nothing
}