Android: Capturer le retour d’une activité

J’ai une question concernant le lancement de nouvelles activités. Cela se résume à ceci. J’ai 3 tabs sur une vue

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

La condition est que l’application s’exécute en mode Portrait.

Les 3 tabs fonctionnent comme prévu avec l’exception de la surface de prévisualisation de la caméra (B). Il est pivoté de 90 degrés. Le seul moyen de corriger cela est de configurer l’application sur un paysage qui renferme tous mes tabs, ce qui est pratiquement impossible.

Ma solution est la suivante: remplacer

mon activité de caméra avec une activité régulière vide à l’exception de

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

Cela lance mon CameraActivity. Et cela fonctionne bien. J’ai dû faire une mise en page linéaire et inclure 3 images qui ressemblent à de vrais tabs, donc je peux essayer d’imiter le fonctionnement des tabs tout en faisant pivoter l’écran en paysage et garder les visuels en portrait. L’utilisateur peut cliquer sur l’une des images (boutons) pour afficher l’onglet suivant. Ceci est mon problème. Il devrait quitter mon «activité de caméra» pour revenir à l’activité «vide» dans un onglet, où il devrait être interprété comme un clic sur l’onglet déshérité de mon image.

L’essentiel est que, lorsqu’il revient, il retourne à une page vide (noire) sous un onglet (car il est ‘vide’). Comment puis-je capturer l’événement de retour sur la page qui a appelé l’activité, puis voir les actions effectuées?

Je peux définir un onclicklistener où je peux répondre aux clics (images) cliqués pour quitter l’activité de la caméra. A la sortie, l’onglet doit être mis à jour pour que vous reveniez. Aucune suggestion?

Merci,

Je vais me concentrer sur la façon de résoudre votre problème afin qu’il se comporte comme vous le souhaitez.

Pour capturer des actions effectuées sur une activité dans une autre, il faut trois étapes.

Lancez l’activité secondaire (votre «activité de caméra») en tant que sous-activité en utilisant startActivityForResult au lieu de startActivity .

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

Dans la sous-activité (activité de caméra), au lieu de simplement fermer l’activité lorsqu’un utilisateur clique sur l’image différente, vous devez créer une nouvelle intention et inclure l’index de l’onglet à afficher lorsque l’application parent est utilisée. . Pour le renvoyer à l’appel parent setResult avant d’appeler finish pour fermer l’activité de la caméra.

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

L’étape finale se situe dans l’activité appelante, remplacez onActivityResult pour écouter les rappels de l’activité de la caméra. Obtenez le supplément de l’intention renvoyée pour déterminer l’index de l’onglet à afficher.

 @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; } } }