Question

J'ai une question concernant le lancement de nouvelles activités. Cela se résume à cela. J'ai 3 onglets 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 onglets fonctionnent comme prévu avec l'exception de la surface de prévisualisation de la caméra (B). Il fait pivoter de 90 degrés. Le seul moyen de le corriger est de définir l’application en mode Paysage, ce qui jette tous les onglets autour de moi, ce qui est quasiment irréalisable.

Ma solution est la suivante: remplacer

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

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

Ceci lance mon CameraActivity. Et ça marche bien. Je devais faire une mise en page linéaire et inclure 3 images qui ressemblent à de vrais onglets, ainsi je peux essayer d'imiter le fonctionnement des onglets tout en faisant pivoter l'écran en paysage et en gardant 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 doit quitter mon "activité de caméra" pour revenir à "activité vide" dans un onglet, où il doit être interprété pour cliquer sur l'onglet souhaité de mon image.

L’essentiel est que lorsqu’il revient, il retourne à une page vierge (noire) sous un onglet (car elle est "vide"). Comment puis-je capturer l'événement de retour sur la page qui a appelé l'activité, puis voir quelle action ils ont effectuée?

Je peux définir un onclicklistener sur lequel je peux répondre aux faux onglets (images) sur lesquels l'utilisateur clique pour quitter l'activité de la caméra. À la sortie, l’onglet devrait se mettre à jour et c’est là que vous reviendrez. des suggestions?

Merci,

Était-ce utile?

La solution

Je vais me concentrer sur la réponse à apporter à votre problème afin qu'il se comporte comme vous le souhaitez.

Pour capturer des actions effectuées sur une activité dans une autre, vous devez suivre trois étapes.

Lancez l'activité secondaire (votre "activité de la 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);

Au sein de la sous-activité (Activité de la caméra), plutôt que de simplement fermer l'activité lorsqu'un utilisateur clique sur une autre image, vous devez créer un nouvel objectif et inclure l'index de l'onglet à afficher lorsque vous revenez à l'application parent à l'aide de les extras bundle. 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();

La dernière étape consiste dans l'activité appelante. Remplacez onActivityResult pour écouter les rappels de l'activité de la caméra. Obtenez l’extra de l’intention renvoyée pour déterminer l’index de l’onglet que vous devriez 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; 
    } 
  } 
} 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top