2010-06-21 5 views
2

Dans Android, l'objet TabHost restitue les activités de manière inline. Je me demande s'il y a un moyen de faire ce genre de chose, sans utiliser l'onglet-hôte. Supposons que je souhaite disposer d'une barre d'outils ou d'un tiroir coulissant qui me permette de basculer entre les activités de la même manière que le TabHost. En d'autres termes, je voudrais rendre une activité en ligne à l'intérieur d'une autre activité, un peu comme un iframe pour les activités ...Android Inline Activity

Répondre

0

Fondamentalement, vous devez jouer avec LocalActivityManager et la ActvityGroup classe:

Supposons que vous ayez votre classe DashBoard:

public class Dashboard extends ActivityGroup implements View.OnClickListener { 
    super.onCreate(savedInstanceState); 

    //Your view with the activity launcher buttons on the bottom for instance 
    setContentView(R.layout.frame); 

    @Override 
    public void onClick(View v) { 


     Intent intent = new Intent().setClassName(context,YourActivity.class); 

     intent.setAction(Intent.ACTION_VIEW); 


     LocalActivityManager localActivityManager = getLocalActivityManager(); 


     final Window w = localActivityManager.startActivity("uniqueID", intent); 
     final View wd = w != null ? w.getDecorView() : null; 

      //the content of your activity goes here 
     FrameLayout frameLayout = (FrameLayout) findViewById(R.id.tabcontent); 
     frameLayout.removeAllViews(); 
     frameLayout.addView(wd); 
    } 

} 
+0

cela semble TRES prometteur, je vais donner un tourbillon et vous faire savoir comment ça se passe ... merci! – Ben

0

Cela peut ne pas être en train de charger exactement Activités séparées, mais ...

lieu d'activités, vous pouvez obtenir cette fonctionnalité du point de vue de l'utilisateur en chargeant dynamiquement des mises en page dans une seule activité. De cette façon, vous pouvez avoir un curseur et mettre à jour la (les) disposition (s) à l'écran si nécessaire.

+0

oui, mais je dois avoir une logique pour chaque vue. Supposons que j'ai comme 10 vues différentes, maintenant tout d'un coup je dois avoir une grande déclaration de commutateur qui déterminerait quelle disposition à montrer et toute la logique pour le rendre. mettre chacun dans sa propre activité serait une bonne façon de séparer les choses dans leur propre lieu logique ... fondamentalement comme le fonctionne TabHost ... sauf l'utilisation de tabhost ... :) – Ben

+0

Haha, eh bien, ça va soyez un hack, quoi que vous fassiez, car la meilleure pratique consiste à utiliser le conteneur d'onglets fourni pour que votre application reste cohérente. Y a-t-il une raison pour laquelle vous ne pouvez pas utiliser TabHost? Ou créez-vous une alternative à TabHost dans le seul but de créer une alternative? –

+0

Eh bien, nous voulons être en mesure de «glisser» entre les vues sans avoir à prendre l'immobilier impliqué w/l'onglet. – Ben

0

Aucune utilisation des activités dans les onglets n'est déconseillée en faveur des vues. Vous pouvez faire d'autres recherches ici ou sur les groupes google Android pour lire pourquoi.

Si vous devez avoir des activités distinctes, vous devez les démarrer correctement avec Intents et laisser Android gérer son cycle de vie ou faire des onglets avec une vue par onglet.