2011-01-06 19 views
0

ich Googles exmaple von Hello, TabWidget bin mit aber es verändert wie folgt aussehen:Hallo, TabWidget jeder Reiter auf neue xml verweisen

main.xml:

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <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"> 
      <TextView 
       android:text="@+layout/text" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" /> 
      <TextView 
       android:id="@+id/textview2" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:text="this is another tab" /> 
      <TextView 
       android:id="@+id/textview3" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:text="this is a third tab" /> 
     </FrameLayout> 
    </LinearLayout> 
</TabHost> 

Java-Datei:

public class HelloTabWidget extends TabActivity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     TabHost mTabHost = getTabHost(); 

     mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1").setContent(R.layout.text)); 
     mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2)); 
     mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("TAB 3").setContent(R.id.textview3)); 

     mTabHost.setCurrentTab(0); 
    } 
} 

und hier ist die text.xml in res/Layout:

<LinearLayout 
    android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" > 

    <TextView 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent" 
      android:text="This is Tab 1" /> 
</LinearLayout> 

Was ich im Grunde versuche zu tun ist, dass jeder Tab auf seine eigene XML-Datei verweist und nicht auf alle in main.xml, aber der Text auf der ersten Registerkarte wird nicht angezeigt.

+0

Wie oben zu sehen, die erste Registerkarte in der Java-Datei, und die erste Clozecall

Antwort

0

Möchten Sie, dass sich jede Registerkarte auf ihre eigene Activity bezieht? Wenn ja, können Sie eine Absicht als Inhalt für jede Registerkarte ein:

intent = new Intent().setClass(this, Test.class);  
spec = tabHost.newTabSpec("tab_test1").setIndicator("TAB 1").setContent(intent); 
     tabHost.addTab(spec); 

Natürlich würden Sie dann eine Klasse mit dem Namen Test-haben müssen (oder was auch immer), die test.xml wie das Layout setzt.

public class Test extends Activity { 

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

This tutorial helfen Ihnen weiter, wenn dies die Art von Szenario ist, dass Sie einzurichten versuchen.

+0

Danke für die Eingabe, aber egal wie oft ich es versuche, meine App wird immer noch geschlossen, bevor sie überhaupt geöffnet wird, und ja, ich möchte es so einrichten, dass jeder Tab auf seine eigene Aktivität verweist. Nach deinem Beispiel und dem Link, den du angegeben hast, schließt sich meine App. Ich habe sogar nach Anweisungen zum Erstellen einer neuen Aktivität gesucht, aber keine Informationen auf der Android-Entwicklungsseite gefunden. – Clozecall

+0

Fügen Sie Ihre Aktivitäten dem Manifest hinzu? Wenn Sie den Anleitungen Zeile für Zeile folgen, versuchen Sie, ein einfaches Projekt zu finden, das bereits fertig ist, und stellen Sie sicher, dass etwas außerhalb Ihrer Anwendung kein Problem ist. – sahhhm

+0

Eigentlich habe ich sie noch nicht zu meinem Manifest hinzugefügt einige Forschung, die ich hier entdeckt habe: http://www.warriorpoint.com/blog/2009/05/24/android-how-to-switch-between-activities/ , dass sie zum Manifest hinzufügen ist notwendig. Obwohl ich zurück zur Android-Entwicklungsseite gegangen bin, konnte ich keine Informationen darüber finden, wie ich meine bestimmte Testaktivität zum Manifest hinzufügen kann, da es kein Hauptstartobjekt ist, sondern auf einer Registerkarte. p.s. Danke für Ihre Hilfe und Geduld bis jetzt! – Clozecall

0

Es gibt drei Optionen für Registerkarten, die den integrierten Registerkarten-Host verwenden.

  1. Mehrere Ansichten auf einer einzigen Aktivität mit einer Layout-Datei
  2. Mehrere Aktivitäten
  3. Benutzerdefinierte Ansichten in einem TabContentFactory gebaut

Es klingt wie Sie # 3 wollen. Was Sie tun müssen, so etwas wie dieses:

setContent(new TabHost.TabContentFactory() { 
    public View createTabContent(String tag) 
    { 
     View view = LayoutInflater.from(HelloTabWidget.this).inflate(R.layout.text); 
     // Setup the view here 
     return view; 
    }}); 
0
View view = LayoutInflater.from(HelloTabWidget.this).inflate(R.layout.text); 

Dieses Recht nicht ganz ist, als LayoutInflater.inflate zwei Parameter nimmt.