3

У меня есть два фрагмента в моем приложении. fA и fb. fA имеет панель инструментов, макет вкладки и просмотрщик. fB имеет текстовое представление и изображение. Когда я нажимаю на какую-либо кнопку в fA на любом пейджере, он открывает fB и отображает изображение с некоторым текстом. Он открывает все отлично, но когда я нажимаю назад, чтобы вернуться к моему первому фрагменту, я теряю макет вкладки. Место для вкладок присутствует, но нет индикатора или названия. Может кто-нибудь помочь?Почему смена фрагментов скрывает мой tablayout (android)?

Мои фА XML:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:clipToPadding="false" 
    android:fitsSystemWindows="true"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/primary" 
     android:clipToPadding="false" 
     android:elevation="4dp" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/primary" 
     android:clipToPadding="false" 
     android:elevation="4dp" 
     android:paddingEnd="0dp" 
     android:paddingStart="48dp" 
     android:layout_marginTop="56dp" 
     android:scrollbars="horizontal" 
     app:tabGravity="center" 
     app:tabIndicatorColor="@android:color/white" 
     app:tabMode="scrollable" 
     app:tabTextColor="@color/primary_text" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clipToPadding="false" /> 

</FrameLayout> 

и мой класс:

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

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

     titles = getTitles(); 

     MainActivity parent = (MainActivity) getActivity(); 
     parent.setToolbar((Toolbar) view.findViewById(R.id.toolbar)); 

     viewPager = (ViewPager) view.findViewById(R.id.viewPager); 
     stateListener = parent.getViewPagerStateListenerInstance(); 
     viewPager.setAdapter(new PagerAdapter(getChildFragmentManager())); 
     viewPager.addOnPageChangeListener(stateListener); 

     TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout); 
     tabLayout.setupWithViewPager(viewPager); 
     parent.setUpTabLayout(tabLayout); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     viewPager.removeOnPageChangeListener(stateListener); 
    } 

Моя панель инструментов и моя вкладка Макет в фрагменте и должны быть заменены.

Любая помощь приветствуется. Thank You

+0

Любого везение фиксирующего вопрос? – Orest

+0

Нет .. Никто так никогда .. Я закончил тем, что начал новую деятельность –

+0

на самом деле я исправил эту проблему – Orest

ответ

2

Используйте, пожалуйста, следующий код. Он работал для меня

viewPager.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      setupWithViewPager(viewPager) 
     } 
    }, 1); 

Я делаю это каждый раз, когда на onCreateView фрагмента

+0

Я знаю, что это грязный хак, но это разрешило мою проблему сейчас – Orest

 Смежные вопросы

  • Нет связанных вопросов^_^