2010-12-20 14 views
0

Wie kann ich die Klasse unten erstellen, um Registerkarten zu erstellen, die auf Aktivitäten verweisen. Es ist so, wie es ist, aber die Tabs sind mit keiner Aktivität verbunden. Ich brauche die Tabs, um verschiedene Aktivitäten zu laden?Android Benutzerdefinierte Registerkarte verknüpft mit Aktivität

import android.app.TabActivity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.TabHost; 
import android.widget.TabHost.TabSpec; 
import android.widget.TextView; 
import android.widget.TabHost.TabContentFactory; 

public class CustomTabActivity extends TabActivity { 
    TabHost mTabHost = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mTabHost = (TabHost) findViewById(android.R.id.tabhost); 
     // mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider); 
     setupTab(new TextView(this), "Tab 1"); 
     setupTab(new TextView(this), "Tab 2"); 
     setupTab(new TextView(this), "Tab 3"); 
    } 

    private void setupTab(final View view, final String tag) { 
     View tabview = createTabView(mTabHost.getContext(), tag); 
     TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview) 
       .setContent(new TabContentFactory() { 

        public View createTabContent(String tag) { 
         return view; 
        } 
       }); 
     mTabHost.addTab(setContent); 
    } 

    private static View createTabView(final Context context, final String text) { 
     View view = LayoutInflater.from(context) 
       .inflate(R.layout.tabs_bg, null); 
     TextView tv = (TextView) view.findViewById(R.id.tabsText); 
     tv.setText(text); 
     return view; 
    } 
} 
+0

Fragen Sie, wie Sie Tabs verwenden? Es gibt eine Reihe von Tutorials für genau dies. – Falmarri

+0

Nicht wirklich, Thtis ist ein benutzerdefiniertes Tab. Ich mussConent auf Aktivitäten und nicht auf Ansichten festlegen ... Ich muss die Registerkarten mit Aktivitäten verknüpfen. Ich habe host.setContent versucht (neue Absicht (this, Headlines.class), die nicht funktioniert hat – Noah

Antwort

0

muss ich Aktivitäten setConent und nicht die Ansichten

Nein, Sie nicht. Sie erhalten nichts, wenn Ihre Tabs mit Aktivitäten gefüllt sind. Tatsächlich verursacht das mehr Schaden als Nutzen - Sie verschwenden den Heap-Speicherplatz, den Stack-Speicherplatz und die CPU-Zeit ohne zusätzlichen Nutzen.

Jetzt müssen Sie Ihren Tab-Inhalt zur Laufzeit nicht definieren, wenn Sie nicht möchten. Zum Beispiel here is a sample project, die den Inhalt der Registerkarte im selben Layout wie die TabHost selbst definiert.

Verwandte Themen