Frage

Dies ist meine erste Registerkarte für Android. Ich bin auf der Androids -Website "Hellotabwidget" -App durchläuft, aber ich kann nicht herausfinden, wie ich den Registerkarten Inhalte hinzufügen kann. Das Framelayout -Zeug übereinander nach oben links (nach dem, was ich gelesen habe). Ich habe ein paar Textviews und ein ImageView hinzugefügt, aber es wird nur das letzte hinzugefügte Element angezeigt. Gibt es eine Möglichkeit, ein lineares Layout anstelle des Frame -Layouts zu verwenden? Wenn nicht, wie können Sie mehrere Ansichten in der Registerkarte platzieren? Das einzige, was ich von dem Beispiel unterschieden habe, ist, dass ich eine 4. Registerkarte hinzugefügt habe. In einer der Registerkartenaktivitäten habe ich den folgenden Code eingefügt, um zu versuchen, mehrere Elemente zum Anzeigen zu erhalten:

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

        TextView textview = new TextView(this);
        textview.setText("This is the About tab");
        setContentView(textview);

        TextView textview2 = new TextView(this);
        textview2.setText("About Test");
        setContentView(textview2);

        ImageView imgView = new ImageView(this);
        imgView.setImageDrawable(getResources().getDrawable(R.drawable.header));
        setContentView(imgView);
    }

Hier ist der Link zu dem Beispiel, das ich folgte:http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

War es hilfreich?

Lösung

Wie lautet Ihre Layout -XML -Datei? Ich benutze das und kann mehrere Textansicht in jeder Registerkarte stapeln. TAPAKTIVITÄT:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ScrollView android:layout_width="fill_parent" 
        android:layout_height="wrap_content" >
        <LinearLayout android:layout_width="fill_parent" 
            android:layout_height="fill_parent"
            android:orientation="vertical" >
            <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>
    </ScrollView>
</TabHost>

Aktivität in der Registerkarte:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView android:id="@+id/textOne" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView android:id="@+id/textTwo" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
<LinearLayout>

Ich bin selbst ein Neuling, also könnte es einen besseren Weg geben, es zu tun. Das funktioniert jedoch für mich.

Andere Tipps

Sie haben das Beispiel nicht sorgfältig gelesen. Schauen Sie sich die Punktzahl 6 an; Sie werden so etwas sehen wie:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, ArtistsActivity.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                      res.getDrawable(R.drawable.ic_tab_artists))
                  .setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent().setClass(this, AlbumsActivity.class);
    spec = tabHost.newTabSpec("albums").setIndicator("Albums",
                      res.getDrawable(R.drawable.ic_tab_albums))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SongsActivity.class);
    spec = tabHost.newTabSpec("songs").setIndicator("Songs",
                      res.getDrawable(R.drawable.ic_tab_songs))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(2);
}

Das ist es, was Sie in die Oncreate für die gestellt haben TabActivity. Wie Sie sehen können, hat es 3 Aktivitäten. Was Sie tun, ist nur eine Aktivität zu verwenden und die Inhaltsansicht dreimal festzulegen, was offensichtlich falsch ist.

Also ... wie kann ich es zum Laufen bringen? Lesen Sie zuerst das Tutorial erneut. Zweitens erstellen Sie eine Aktivität für jede Registerkarte, die Sie anzeigen möchten. Und verwenden Sie das obige Modell, um diese Aktivitäten zu Ihrem hinzuzufügen TabHost.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top