2013-03-11 2 views
0

Im»пытается добавить FragmentTabHost внутри Fragment (что содержание другой вкладки виджетаОшибки при использовании FragmentTabHost внутри фрагмента

Я использовал следующий XML:

<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="@android:id/tabcontent" 
       android:layout_width="0dp" 
       android:layout_height="0dp" 
       android:layout_weight="0"/> 
     <FrameLayout 
       android:id="@+id/realtabcontent" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1"/> 
     <TabWidget 
       android:id="@android:id/tabs" 
       android:orientation="horizontal" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="0"/> 

    </LinearLayout> 
</android.support.v4.app.FragmentTabHost> 

И в мои Fragment «ы onCreateView() метод:

View basicSearchView = inflater.inflate(R.layout.search_layout, container, false); 
     try { 
     mTabHost = (FragmentTabHost) basicSearchView.findViewById(android.R.id.tabhost); 
     LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false); 
     mTabHost.setup(mLocalActivityManager); 

     TabHost.TabSpec tab = mTabHost.newTabSpec("my tab content"); 

     tab.setContent(new Intent(getActivity(), JoinActivity.class)); 
     tab.setIndicator("Test", getResources().getDrawable(R.drawable.search_pheeds_selector)); 
     mTabHost.addTab(tab); 
     } 
     catch (Exception e) { 
      Log.e("Udi",e.getMessage()); 
     } 

     return basicSearchView; 

На первый Igot следующее сообщение об ошибке:

ERROR/Udi(25726): Must call setup() that takes a Context and FragmentManager 

Затем я изменил конфигурацию:

mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent); 

И я получил эту ошибку вместо:

ERROR/Udi(25996): Did you forget to call 'public void setup(LocalActivityManager activityGroup)'? 

Есть правильный способ поставить закладку хост внутри Fragment?

ответ

1

Вы не прочитали документацию для класса FragmentTabHost, в котором четко указано, что FragmentTabHost - это Специальный TabHost, который позволяет использовать объекты фрагмента для содержимого своей вкладки.. Таким образом, вы не можете настроить вкладки как действия, и в любом случае это не имеет смысла, поскольку вы пытаетесь выполнять действия в фрагментах (это должно быть наоборот).

Так измените свой код, чтобы использовать фрагменты в качестве содержимого вкладок, или используйте обычный TabHost в Activity, чтобы продолжать использовать эти действия в качестве вкладок (этот параметр устарел, и вам действительно нужно перейти к первому варианту).

Is there a proper way to put tab host inside a Fragment?

В документации я связан вам пример, если я не ошибаюсь, есть некоторые примеры образцов поддержки библиотеки.