2010-11-02 8 views
1

J'ai une TabActivity, et chaque onglet correspond à sa propre activité. Dans l'un d'entre eux, dans la méthode onCreate, j'utilise startActivityForResult pour afficher une boîte de dialogue (en particulier, l'activité BumpAPI de Bump).Comment gérer les changements d'orientation de l'écran avec une activité commencée dans l'activité d'un onglet?

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    bump = new Intent(this, BumpAPI.class); 
    bump.putExtra(BumpAPI.EXTRA_API_KEY, API_KEY); 
    startActivityForResult(bump, BUMP_API_REQUEST_CODE); 
} 

Le problème est que lorsque les changements d'orientation de l'écran, il tente de créer à nouveau l'activité de l'onglet qui fait un autre dialogue BumpAPI, entraînant plusieurs empilés les uns sur les autres. Est-ce que j'ai un crochet dans l'activité commencée pour annuler le précédent lorsque l'orientation change?

Une solution de contournement semble être d'ajouter un bouton qui, une fois cliqué, démarre la deuxième activité, mais cela ajoute une étape inutile.

En outre, je ne peux pas corriger l'orientation de l'écran pour la totalité de tabActivity, car certains d'entre eux nécessitent une saisie et les utilisateurs peuvent vouloir utiliser leurs claviers physiques.

Répondre

1

Ok, je l'ai compris ... une solution assez simple. Ajoutez simplement android: configChanges = "orientation | keyboardHidden" à l'activité dans AndroidManifest. Cela lui dit de ne pas redémarrer l'activité pour ces types de changements de configuration. Seulement approprié si vous n'avez pas des dispositions distinctes pour les différentes orientations, mais nous n'avons heureusement pas.

Questions connexes