2010-11-11 18 views
0

Donc, j'essayais un hack pour mettre un pansement rapide sur un problème que je suis qui est décrit dans another question J'ai posté.Android Activity setResult non persistant?

J'ai une sous-activité qui a été lancée par mon activité principale et elle peut également être arrêtée par l'activité principale appelant finishActivity (requestCode) dessus. Cependant, la sous-activité retourne toujours 0 après l'appel finishActivity - même si je ne place ce résultat dans la sous-activité que si l'utilisateur appuie sur le bouton retour. J'ai essayé de tricher en appelant setResult (RESULT_OK) dans la méthode de sous-activité onResume, mais cela semble ne faire aucune différence;

De même, pour une raison quelconque, il faut attendre longtemps avant que les paramètres onActivityResults entrent en jeu. Est-ce normal?

Merci pour votre conseil!

Répondre

0

Observé le même comportement. Dans la classe principale qui appelle finishActivity() Je devais me souvenir ID de l'activité que je forcé de fermer, alors quand il retourne dans onActivityResult je peux distinguer deux cas:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode == Activity.RESULT_CANCELED) { 
     switch (requestCode) { 
      case OUTSOURCED_INTENT: 
      { 
       if(mForcedClosingOfOutsourcedActivity) 
       { 
        //Handles case of forced closing 
       } 
       else 
       { 
        //Handles case of normal closing from Activity 
       } 
      } 
      break; 
     } 
    } 
}  

Certainement, ce n'est pas OK attendez si longtemps jusqu'à la fermeture de l'activité.

+0

Oui, j'ai quelque chose de bizarre Je vérifie déjà le requestCode et je sais que c'est ma sous-activité. J'ai deux problèmes principaux, (1) Je reçois toujours RESULT_CANCELED même si j'appelle setResult (RESULT_OK) dans mon onCreate et OnResume – bursk

+0

(2) après avoir appelé finishActivity je ne reçois pas un retour immédiat, en fait il peut être assez longtemps. C'est comme si quelque chose empêchait la sous-activité d'être détruite. – bursk

+0

Ad (1): il n'est pas complètement sans sens d'obtenir RESULT_CANCELED, car en appelant finishActivity() il est annulé, pas terminé comme prévu. Le code que je mets en exemple est comment surmonter ce comportement. – Zelimir