onActivityResult () a des données d'intention comme nules après la fin d'une activité
Salut à tous je suis à l'appel d'une startActivityForResult() et en essayant de traiter le résultat dans le onAcvityResult() la méthode. Cependant, l'Intention de données est nulle et le résultat est RESULT_CANCELED. Je ne suis pas sûr, mais pourquoi.
Je suis en création d'activité avec:
startActivityForResult(new Intent(this, Class.class),LIST_RESULT);
puis dans la classe d'Activité
@Override
public void onBackPressed() {
super.onBackPressed();
Intent data = new Intent();
Bundle bundle = new Bundle();
bundle.putParcelable("name", la);
data.putExtras(bundle);
if (getParent() == null) {
setResult(Activity.RESULT_OK, data);
} else {
getParent().setResult(Activity.RESULT_OK, data);
}
//finish();
}
finish() n'a aucun effet. En fait je obtenir de l'avertissement dans le LogCat que les doublons de terminer demande HistoryRecord
Et je suis le traitement de la suite dans:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case(LIST_RESULT):
if(resultCode == Activity.RESULT_OK) {
previousList = data.getExtras();
}
break;
}
}
de données est nulle, et la resultCode est l'Action.RESULT_CANCELED.
Des idées pourquoi je n'obtiens pas de travers? Est quelque chose qui change entre les deux moi de le définir et de le lire? Le mParent est aussi nulle dans l'activité qui retourne le résultat.
Alex
source d'informationauteur Alex
Vous devez vous connecter pour publier un commentaire.
Alex,
Je pense que vous voulez supprimer de la appelé à
finish()
dans votreonBackPressed()
méthode, et de le remplacer avec de l'appel àsuper.onBackPressed()
. Je crois que l'appel àsuper.onBackPressed()
est l'appel de finition et vous ne jamais obtenir une chance d'appelersetResult()
.Essayer...
J'ai regardé la solution proposée et la question d'origine exemple. Dans mon cas , le même message d'erreur ci-dessus a été de réutiliser le même requestCode valeur.
Faites attention à votre requestCode sur l'utilisation de startActivityForResult, chaque Activité doit avoir un autre requestCode.
Si vous réutilisez ou ne faites pas attention à votre requestCode être unique pour chaque Activité de l'appel, vous obtiendrez le message d'erreur suivant:
“onActivityResult() a l'Intention de données comme nulle après une Activité est fini” ou ”Échec de remise résultat ResultInfo”.
Utiliser la définition de la variable pour chaque startActivityForResult,pour assurer la clarté. ex.
public static final int INITIATIVE_REQUEST = 11
Répète la même requestCode sur de multiples Activités résultat sur le message ci-dessus.