81 votes

Android: Capturer le retour d'une activité

J'ai une question concernant le lancement de nouvelles activités. Il se résume à ceci. J'ai 3 onglets sur une vue

A) contains gMap activity
 B) camera activity
 C) some random text fields.

Condition est que l'application s'exécute en mode Portrait.

Tous les 3 onglets fonctionnent comme prévu w/ l'exception de l'Aperçu de la Caméra de Surface (B). Il est tourné de 90 degrés. Ils seule façon de le faire est correct pour définir l'application de paysage qui jette tous mes onglets autour, et est à peu près impraticable.

Ma solution est ceci : remplacer

mon activité de la caméra avec une activité régulière qui est vide w/ l'exception de

Intent i = new Intent(this,CameraActivity.class);
    startActivity(i);

Cette lance mon CameraActivity. Et cela fonctionne bien. J'ai eu à faire un linéaire de la mise en page et inclure les 3 images qui ressemblent à de vrais onglets, afin que je puisse essayer et de mimer le fonctionnement des onglets lors de la rotation de l'écran en mode paysage et garder les visuels que le portrait. L'utilisateur peut cliquer sur une des images(boutons) pour afficher l'onglet suivant. C'est mon problème. Il devrait quitter mon "activité de la caméra de' retour à la vierge de l'activité " dans un onglet, où il devrait être interprété de cliquer sur le desiered onglet de mon image.

La chose principale est que, quand il revient, il revient à un vide (noir) de la page dans l'onglet (parce qu'il est "vide"). Comment puis-je capturer le retour de l'événement sur la page l'activité, puis de voir l'action qu'ils effectués?

Je peux mettre un onclicklistener où je peux répondre à la faux onglets (images) être cliqué pour sortir de l'activité de la caméra. À la sortie, l'onglet mise à jour c'est donc là que vous retournez. toutes les Suggestions?

Merci,

158voto

Reto Meier Points 55904

Je vais me concentrer sur la réponse à comment résoudre le contourner afin qu'il se comporte comme vous le souhaitez.

Pour capturer les actions effectuées sur une Activité dans un autre nécessite trois étapes.

Lancement de l'Activité secondaire (votre "appareil") comme une sous-activité en utilisant startActivityForResult au lieu de startActivity.

Intent i = new Intent(this,CameraActivity.class);    
startActivityForResult(i, STATIC_INTEGER_VALUE);

Au sein de la sous-activité (Activité de la caméra), plutôt que de simplement fermer l'Activité lorsqu'un utilisateur clique sur l'onglet différent de l'image, vous devez créer une nouvelle Intention et comprennent l'index de l'onglet pour afficher lorsque vous revenez à l'application parente en utilisant le bundle extras. À transmettre au parent d'appel setResult avant d'appeler finish pour fermer l'appareil photo de l'Activité.

resultIntent = new Intent(null);
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, tabIndexValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();

La dernière étape consiste en l'appelant Activité, substituer onActivityResult à écouter pour les rappels de l'Activité de la caméra. Obtenir le plus depuis le retour de l'Intention de déterminer l'index de l'onglet, vous devriez être à l'affichage.

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {     
  super.onActivityResult(requestCode, resultCode, data); 
  switch(requestCode) { 
    case (STATIC_INTEGER_VALUE) : { 
      if (resultCode == Activity.RESULT_OK) { 
      int tabIndex = data.getIntExtra(PUBLIC_STATIC_STRING_IDENTIFIER);
      // TODO Switch tabs using the index.
      } 
      break; 
    } 
  } 
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X