2011-01-10 8 views
4

gerade verwende ich in meiner Anwendung Tabhost mit einzelnen Aktivitäten und separaten Ansichten.Ändern der Ansicht in TabHost (eine Aktivität, mehrere Ansichten)

Tab Aktivität:

super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

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

    TabHost.TabSpec spec = tabs.newTabSpec(TAB_HOTELS); 
    spec.setContent(R.id.tab1); 
    spec.setIndicator("Hotels"); 
    tabs.addTab(spec); 

    spec = tabs.newTabSpec(TAB_LAST_MINUTE); 
    spec.setContent(R.id.tab2); 
    spec.setIndicator("Last Minute"); 
    tabs.addTab(spec); 

Layout-

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tabhost" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <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"> 
      <LinearLayout android:layout_width="fill_parent" 
       android:layout_height="fill_parent" android:id="@+id/tab1" 
       android:orientation="vertical"> 
       <ListView android:id="@+id/listaLocalita" 
        android:layout_width="fill_parent" android:layout_height="wrap_content" /> 
      </LinearLayout> 

      <LinearLayout android:layout_width="fill_parent" 
       android:layout_height="fill_parent" android:id="@+id/tab2" 
       android:orientation="vertical" android:paddingTop="60px"> 
       <TextView android:layout_width="fill_parent" 
        android:layout_height="100px" android:text="This is tab 2" 
        android:id="@+id/txt2" /> 
      </LinearLayout> 
     </FrameLayout> 
    </LinearLayout> 
</TabHost> 

Und die Dinge funktionieren recht gut, solange ich eine Ebene Tiefe bin mit. Leider muss ich jetzt einen der Tabs wie folgt arbeiten:

Tab laden ListView mit der Liste der Städte, User klickt auf Stadtnamen, Tabs Inhalt wird durch die Liste der Hotels ersetzt, Nutzer wählen ein Hotel und immer im selben Tab, wird die Hotelinfo geladen.

Wie kann ich dieses Szenario erreichen? LayoutInfalter?

Vielen Dank im Voraus.

+0

Haben Sie das jemals herausgefunden? Ich suche etwas Ähnliches. –

+0

Siehe nur [dieses Beispiel] (http://ericharlow.blogspot.in/2010/09/experience-multiple-android-activities.html). Hoffe es wird dir helfen. –

Antwort

0

Sie können Intent verwenden, um Aktivität als Tab-Inhalt festzulegen, und diese Aktivität kann andere Aktivitäten aufrufen, entweder listView oder andere.

/** tid1 is firstTabSpec Id. Its used to access outside. */ 
     TabSpec MainTab = tabHost.newTabSpec("tag1"); 
     TabSpec SearchTab = tabHost.newTabSpec("tag2"); 
     TabSpec MessageTab = tabHost.newTabSpec("tag3"); 
     TabSpec ServicesTab = tabHost.newTabSpec("tag4"); 
     TabSpec SettingsTab = tabHost.newTabSpec("tag5"); 

     MainTab.setIndicator("Main", res.getDrawable(R.drawable.anchor_36)); 
     MainTab.setContent(new Intent(this, MainView.class)); 

    SearchTab.setIndicator("Search", res.getDrawable(R.drawable.clock_36)); 
    SearchTab.setContent(new Intent(this, SearchView.class)); 

    MessageTab.setIndicator("Messages", res 
      .getDrawable(R.drawable.dialog_36)); 
    MessageTab.setContent(new Intent(this, MessagesView.class)); 

    ServicesTab.setIndicator("Services", res 
      .getDrawable(R.drawable.cloud_36)); 
    ServicesTab.setContent(new Intent(this, ServicesView.class)); 

    SettingsTab.setIndicator("Settings", res 
      .getDrawable(R.drawable.settings_36)); 
    SettingsTab.setContent(new Intent(this, SettingsView.class)); 

    /** Add tabSpec to the TabHost to display. */ 
    tabHost.addTab(MainTab); 
    tabHost.addTab(SearchTab); 
    tabHost.addTab(MessageTab); 
    tabHost.addTab(ServicesTab); 
    tabHost.addTab(SettingsTab); 

nun in der geladenen Aktivität können Sie den Code wie

StartActivity(new intent(currentActivity.this, newActivity.class)); 

verwenden diese für Sie arbeiten.

+0

shure, aber dies wird 'newActivity' nicht innerhalb des Tabs, sondern in einem einzigen Fenster starten ... –

Verwandte Themen