2011-01-14 1 views
0

Ich habe beschlossen, Ansichten für meine Tab-Schnittstelle zu verwenden ... ich ein Tab-Interface Tutorial und das Ergebnis dieses Tutorial folge 4 Reiter ohne Inhalt (Text) unter meinen Registerkarten ..Android: CustomTabs

I Ich frage mich, wie die Ansichten funktionieren. Wie kann ich eine Methode erstellen, um Inhalt auf die Registerkarte einer anderen Klasse zu setzen. Also main.java ist meine Hauptdatei mit den Ansichten (Tabs). Tab1.java hat Google Maps Navigationscode.

Wie ich die Methode setupTab aufrufen kann und die Navigationsfunktion auf die Registerkarte 1.

Hier können Sie meinen Code gesetzt sehen:
Vielen Dank im Voraus!

package CustomTabs; 
    import android.app.Activity; 
    import android.graphics.drawable.Drawable; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.TabHost; 
    import android.widget.TextView; 
    import android.widget.TabHost.TabContentFactory; 
    import android.widget.TabHost.TabSpec; 

    public class CustomTabs extends Activity { 

    private TabHost mTabHost; 

    private void setupTabHost() { 
     mTabHost = (TabHost) findViewById(android.R.id.tabhost); 
     mTabHost.setup(); 
    } 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // construct the tabhost 
     setContentView(R.layout.main); 

     setupTabHost(); 

     setupTab(new TextView(this), "Tab 1", getResources().getDrawable(R.drawable.ic_tab_artists)); 
     setupTab(new TextView(this), "Tab 2", getResources().getDrawable(R.drawable.ic_tab_artists)); 
     setupTab(new TextView(this), "Tab 3", getResources().getDrawable(R.drawable.ic_tab_artists)); 
     setupTab(new TextView(this), "Tab 4", getResources().getDrawable(R.drawable.ic_tab_artists)); 
     { 
     final View v = mTabHost.getTabWidget().getChildAt(0); 
     v.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_bg_selector)); 
     TextView tv = (TextView) v.findViewById(android.R.id.title); 
     tv.setTextColor(this.getResources().getColorStateList(R.drawable.tab_text_selector)); 
     } 
     { 
     final View v = mTabHost.getTabWidget().getChildAt(1); 
     v.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_bg_selector)); 
     TextView tv = (TextView) v.findViewById(android.R.id.title); 
     tv.setTextColor(this.getResources().getColorStateList(R.drawable.tab_text_selector)); 
     } 
     { 
     final View v = mTabHost.getTabWidget().getChildAt(2); 
     v.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_bg_selector)); 
     TextView tv = (TextView) v.findViewById(android.R.id.title); 
     tv.setTextColor(this.getResources().getColorStateList(R.drawable.tab_text_selector)); 
     } 
     { 
     final View v = mTabHost.getTabWidget().getChildAt(3); 
     v.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_bg_selector)); 
     TextView tv = (TextView) v.findViewById(android.R.id.title); 
     tv.setTextColor(this.getResources().getColorStateList(R.drawable.tab_text_selector)); 
     } 

    } 

    private void setupTab(final View view, final String tag, Drawable icon) { 
     TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tag, icon).setContent(new TabContentFactory() { 
     public View createTabContent(String tag) {return view;} 
     }); 
     mTabHost.addTab(setContent); 

    } 
    } 

Antwort

0

Ist this was Sie wollen? Im Grunde müssen Sie nur die Absicht festlegen und sie mit der entsprechenden Registerkarte verknüpfen.

+0

Nein, ich glaube nicht .. Ich habe mich gefragt, eine Ansichtsmethode zu erstellen, wo ich sagen kann .. Beispiel public void() setcontent View v {TextView textview = neuer TextView (this); textview.setText ("test")}, aber ich weiß nicht, wie ich diese Methode erstellen soll. – anddevelop

+0

Entschuldigung, ich verstehe deine Frage nicht wirklich. Sie haben gefragt, wie Sie den Tab-Inhalt einrichten sollen, richtig? Erstellen Sie eine Absicht, die Ihre bestimmte Klasse ausführt, Intent intent = new Intent(). SetClass (this, your_class.class); In your_class können Sie dann den setText definieren oder was auch immer Sie tun möchten. – springrolls

0

Wenn ich das richtig verstehe, möchten Sie Ihre Aktivitäten als Inhalt Ihrer Tabs hinzufügen, daher müssen Sie die Absicht in der setupTab-Methode hinzufügen. Beispiel:

setupTab(new TextView(this), "title", getResources().getDrawable(R.drawable.icon), new Intent(this, yourclass.class)); 

Dies startet die Intents brauchen für Ihre Tabs. Um nun für die Intents sichtbar sein müssen Sie es zu Ihrem setupTab Methode hinzufügen wie folgt:

private void setupTab(final View view, final String tag, Drawable drawable, Intent  intent) { 
    View tabview = createTabView(mTabHost.getContext(), tag, 0); 
    TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(intent); 
    mTabHost.addTab(setContent); 

Wenn dies nicht das, was Sie suchen, dann müssen Sie Ihre Frage neu zu formulieren.

Verwandte Themen