2010-08-24 5 views
1

J'ai mis une petite application qui a trois onglets pour afficher trois pages Web différentes. Cela fonctionne mais je suis un peu inquiet, je n'ai pas assez de contrôle sur la façon dont tout cela fonctionne. Lorsque je clique sur un onglet, une page Web est chargée (voir l'exemple de code ci-dessous), maintenant, lorsque je clique sur un autre onglet, une autre page est chargée dans une autre vue. Quand je reviens au premier onglet, le tout s'initialise à nouveau et la page se charge. Existe-t-il un moyen de contrôler cela et de garder l'activité de l'onglet underneeth dans son état actuel aussi longtemps que je le souhaite (et de ne dire que «rafraîchir» la page quand elle change). Ai-je besoin de gérer les méthodes onPause()/onResume() pour cela ou d'implémenter mes onglets en tant que vues d'une seule activité (est-ce possible?)? Comment stocker l'état de mon activité pour éviter de la réinitialiser à chaque fois?Onglets Android - éviter de recréer des activités sur les clics sur les onglets

cette façon dont les activités sont accrochés aux onglets:

intent = new Intent().setClass(this, tab_schedule.class); 
    spec = tabHost.newTabSpec("Schedule").setIndicator("Schedule", 
    res.getDrawable(R.drawable.tab_icon_schedule)).setContent(
    intent); 
    tabHost.addTab(spec); 

la tab_schedule.class ne simple chargement de la page web:

@Override 
public void onCreate(Bundle savedInstanceState) { 

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

    try { 

    WebView currentView = (WebView) findViewById(R.id.tab_people_WebView); 
    currentView.getSettings().setJavaScriptEnabled(true); 
    currentView.loadUrl("http://pda.lenta.ru"); 

    } catch (Exception e) { 
    Log.v("webClientInit", e.getMessage()); 
    } 
} 

Répondre

3

Si vous ne voulez pas créer une nouvelle activité pour chaque onglet, vous pouvez utiliser un TabWidget avec un FrameLayout pour basculer entre les vues. Pour les activités de commutation, voir question pour ne pas recréer l'activité à chaque fois. Quoiqu'il en soit, vous devez toujours mettre en œuvre onPause et onResume pour restaurer l'état de votre application. Vous pourriez vouloir lire sur le Activity Lifecycle, mais fondamentalement vous ne pouvez pas empêcher votre activité d'être tuée si elle passe en arrière-plan. Ainsi, vous devriez stocker votre état dans onPause. Le lien ci-dessus a quelques informations sur la façon de le faire aussi bien.

0

Pour placer l'activité précédente en haut de la pile, utilisez la méthode intent.addFlag (Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

Questions connexes