4 votes

Programmation Android 1.5 avec TabHost et boutons

Je suis en train d'essayer le SDK Android 1.5 et j'ai vu quelques exemples sur TabHost. Ce que j'essaie de faire, c'est d'utiliser un bouton différent sur chaque onglet pour effectuer ses tâches.

Ce que j'ai essayé a été d'utiliser onClickListiner() et onClick(). Je pense que c'est ce que tous les développeurs utilisent, mais je continue à obtenir une exception null dans le LogCat à chaque fois que le bouton est pressé. J'ai également chaque disposition XML et j'appelle l'onglet comme suit : tab.add(...setContent(R.id.firstTabLayout))

firstTabLayout = layout for Button and TextView.

Quelle serait la meilleure façon de faire fonctionner correctement un bouton/TextView sous l'hôte de l'onglet ?

0voto

Andrew Burgess Points 3053

Je ne sais pas exactement où se situe votre problème, mais c'est ainsi que j'ai configuré mes activités par onglets auparavant.

layout.xml

<TabWidget android:id="@android:id/tabs"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

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

    <LinearLayout android:id="@+id/tab1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView android:id="@android:id/text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>
    <LinearLayout android:id="@+id/tab2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView android:id="@android:id/text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>
    <LinearLayout android:id="@+id/tab3"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView android:id="@android:id/text"
            android:layout_width="fill_parent"
                android:layout_height="wrap_content" />

    </LinearLayout>
</FrameLayout>

Tab.java

public class InitialActivity extends TabActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);

        TabHost th = getTabHost();
        th.addTab(th.newTabSpec("tab_1").setIndicator("Tab1").setContent(R.id.tab1));
        th.addTab(th.newTabSpec("tab_2").setIndicator("Tab2").setContent(R.id.tab2));
        th.addTab(th.newTabSpec("tab_3").setIndicator("Tab3").setContent(R.id.tab3));
    }
}

Ensuite, vous pouvez simplement utiliser findViewById() sur toutes les vues à l'intérieur des onglets, ou s'il y a des noms partagés entre eux, vous pouvez faire findViewById(R.id.tab1).findViewById(R.id.text)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X