Android TabHost только внутри одного фрагмента (NavigationDrawer)

В настоящее время я кодирую приложение, которое использует множество фрагментов, доступных с помощью навигационного ящика. Пока все хорошо, но я также хочу иметь TabHost с 2 вкладками внутри одного из фрагментов. Как лучше реализовать? Это фрагмент кода:

public class SectionFragment extends Fragment {

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

int position = getArguments().getInt("position");

if (position == 0) {

    rootView = inflater.inflate(R.layout.startmenu_layout, container,
        false); // die rootView zum Weiterarbeiten holen
} else if (position == 1) {
    rootView = inflater.inflate(R.layout.startmenu_layout, container,
        false);

и так далее...

Как лучше поступить? Заранее спасибо,

Форумфрессер


person forumfresser    schedule 30.12.2013    source источник
comment
Как вы пытались реализовать это до сих пор?   -  person user    schedule 31.12.2013
comment
@Luksprog Я пытался вызвать 2 внутренних фрагмента (я думаю, вы должны это сделать) и сделать их доступными с помощью TabHost, но я понятия не имею, как это правильно закодировать.   -  person forumfresser    schedule 31.12.2013
comment
В том, что вы хотите сделать, нет ничего особенного. Вы бы использовали тот же код, только вам нужно использовать getChildFragmentManager() вместо getFragmentManager() (или версию поддержки). Кроме того, вы можете взглянуть на FragmentTabHost.   -  person user    schedule 31.12.2013


Ответы (1)


вот код, который я использую для своего TabHost, я знаю, как вы себя чувствуете, потому что очень сложно найти работающий учебник и рабочий пример...

так или иначе

TabHost tabs=(TabHost)findViewById(R.id.tabhost);

tabs.setup();

TabHost.TabSpec spec=tabs.newTabSpec("tag1");

spec.setContent(R.id.tab1);//here you define which tab you want to setup
spec.setIndicator("So Close");//here you choose the text showed in the tab
tabs.addTab(spec);

spec=tabs.newTabSpec("tag2");
spec.setContent(R.id.tab2);
spec.setIndicator("Contacts");
tabs.addTab(spec);

и вот код xml, который я использую

<TabHost
        android:id="@+id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/setting" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="46dp"
            android:background="@drawable/transparent_white" />

        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <TextView
                android:id="@+id/tab1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:textColor="@color/white"
                android:textAppearance="?android:attr/textAppearanceLarge" />


            <TextView
                android:id="@+id/tab2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:textAppearance="?android:attr/textAppearanceLarge"  />

        </FrameLayout>

    </LinearLayout>
</TabHost>

убедитесь, что вы изменили фон TabWidget в соответствии с вашим разрешением

вы можете поместить код xml в любое место в файле макета, RelativeLayout или LinearLayout... и вы можете изменить тип данных, отображаемых на вкладках... Надеюсь, я смог помочь :)

person Owehbeh    schedule 30.12.2013
comment
Черт, это одно простое, но рабочее решение! Какой бесценный кусок кода! Большое спасибо! - person forumfresser; 31.12.2013
comment
Я до сих пор не понимаю, как это работает внутри фрагмента, прикрепленного к Activity с помощью навигационного ящика. Примеров его использования очень мало. Только один из моих фрагментов должен содержать вкладки в верхней части окна. - person Jethro; 16.02.2016