0

У меня есть проект, над которым я работаю в Android. У меня есть один большой фрагмент, который охватывает весь экран в моей основной деятельности. Обычно I для каждого экрана ui, который использует пользователь, я бы просто выполнил команду replace и заменил фрагменты для каждого экрана.Android: фрагменты tablayout/viewpager внутри фрагмента или активности

В моем текущем я хочу поместить комбинацию tablayout/viewpager с тремя различными фрагментами, и в зависимости от того, какая вкладка нажата, я покажу новый фрагмент. Проблема в том, что это табуляция, показывающая три разных фрагмента внутри другого фрагмента. Возможно ли это или рекомендуется? и если я должен изменить его на новую деятельность. Будет ли навигационный ящик действовать нормально и просто закрыт, когда я загружу действие, или там тоже будет проблема.

Спасибо за вашу помощь

+0

Я сделал проект с фрагментом ViewPager, содержащим больше фрагментов. Это определенно возможно, но код может быть сложным для управления, если вы передаете данные по этим представлениям. –

ответ

2

Вы можете проверить ниже официальной документации по той же или может использовать свой демо-фрагмент: https://developer.android.com/reference/android/support/v4/app/FragmentTabHost.html

Попробуйте сделать это, чтобы справиться с вкладками в главном фрагменте:

public class MainFragment extends Fragment { 
private FragmentTabHost mTabHost; 

//Mandatory Constructor 
public MainFragment() { 
} 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_tabs,container, false); 


    mTabHost = (FragmentTabHost)rootView.findViewById(android.R.id.tabhost); 
    mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent); 

    mTabHost.addTab(mTabHost.newTabSpec("fragmentb").setIndicator("Fragment B"), 
      FragmentB.class, null); 
    mTabHost.addTab(mTabHost.newTabSpec("fragmentc").setIndicator("Fragment C"), 
      FragmentC.class, null); 
    mTabHost.addTab(mTabHost.newTabSpec("fragmentd").setIndicator("Fragment D"), 
      FragmentD.class, null); 


    return rootView; 
} 

}

С этой вкладкой:

<android.support.v4.app.FragmentTabHost 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/tabhost" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout 
     android:id="@+id/realtabcontent" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"/> 

</LinearLayout> 

+1

Awesomwe отлично поработал –

0

Да, TabLayout с ViewPager будет поддерживать это разные фрагменты в памяти.

Поскольку в вашем случае будет всего 3 вкладки, это не повлияет на производительность вашей памяти, вы можете пойти с pagerAdapter.

Вы можете повторно использовать один фрагмент для других вкладок, но, как я уже сказал, поскольку есть только 3 вкладки, это не повлияет на вашу производительность.

И да, вы можете иметь tabLayout внутри вашего основного фрагмента, основной фрагмент которого является частью вашей деятельности, он будет следовать тому же жизненному циклу, что и хостинг, за исключением нескольких других обратных вызовов.

+0

Спасибо за ваш ответ, но это не мой вопрос. Я спрашиваю, возможно ли иметь фрагмент tablayout внутри основного фрагмента. –

+0

да, почему бы и нет, вы можете получить его в основном фрагменте. – Ritesh

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