2010-11-19 50 views
1

J'ai une TabActivity qui héberge de nombreux onglets. Chaque onglet fait référence à la même activité, mais la logique est effectuée à l'intérieur de l'activité qui détermine ce qui doit être chargé. Je voudrais que cela soit fait en passant un booléen à l'onglet respectif. Comment puis-je faire ceci?Comment puis-je transmettre des extras à une intention dans une TabActivity?

package com.stocktwits.activity; 

import android.app.TabActivity; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.widget.TabHost; 

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

     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, StreamActivity.class); 

     // Initialize a TabSpec for each tab and add it to the TabHost 
     intent.putExtra("reloadAll", true); 
     spec = tabHost.newTabSpec("all").setIndicator("All",res.getDrawable(R.drawable.icon)).setContent(intent); 
     tabHost.addTab(spec); 

     // Do the same for the other tabs 
     intent = new Intent().setClass(this, StreamActivity.class); 
     spec = tabHost.newTabSpec("home").setIndicator("Home",res.getDrawable(R.drawable.icon)).setContent(intent); 
     tabHost.addTab(spec); 

     intent = new Intent().setClass(this, StreamActivity.class); 
     spec = tabHost.newTabSpec("mentions").setIndicator("Mentions",res.getDrawable(R.drawable.icon)).setContent(intent); 
     tabHost.addTab(spec); 

     intent = new Intent().setClass(this, StreamActivity.class); 
     spec = tabHost.newTabSpec("directs").setIndicator("Directs",res.getDrawable(R.drawable.icon)).setContent(intent); 
     tabHost.addTab(spec); 

     intent = new Intent().setClass(this, StreamActivity.class); 
     spec = tabHost.newTabSpec("more").setIndicator("More",res.getDrawable(R.drawable.icon)).setContent(intent); 
     tabHost.addTab(spec); 

     tabHost.setCurrentTab(0); 
    } 
} 
+0

Pourquoi utilisez-vous une activité à la place une vue si la vue est toujours le même pour chaque onglet? Je pense que vous pourriez utiliser 'android.widget.TabHost.OnTabChangeListener' et gérer ici le contenu de la vue principale –

+0

pouvez-vous me donner un exemple d'un TabHost qui charge des vues au lieu des activités? –

Répondre

0

Il semble que vous vous trompiez. Pourquoi voudriez-vous que la même activité soit transmise à tous les onglets? Utilisez des activités différentes ou des vues différentes. Pas la même activité.

+0

Mon activité remplit une liste de certaines URL. Il y a probablement 10 URL différentes que je suis en train de basculer entre. Est-ce que ça sonne bien? Ou dois-je encore utiliser des vues différentes? Ce serait une mauvaise pratique de créer 10 activités différentes. –

0

Regardez here

Permettez-moi de savoir si cela est une solution valable pour votre but