2011-10-17 2 views
0

J'ai une activité qui permet à un utilisateur de choisir un contact et il renvoie le résultat en utilisant onActivityResult().OnRestoreInstanceState n'étant pas appelé après l'activation de onActivityResult() à partir d'un sélecteur de contacts?

Lorsque l'activité est renvoyée par le sélecteur de contacts, j'essaie de retirer du contenu d'un ensemble dans onRestoreInstanceState(). Mais après la onActivityResult est appelé OnRestore ne fonctionne ..

Je suis log.e pour vérifier si elle est couru et il isnt ...

Voici mon OnRestore

@Override 
    protected void onRestoreInstanceState(Bundle outState){ 
     super.onRestoreInstanceState(outState); 
     Log.e("SmsEditCreate", "Inside onRestore"); 
     mDbHelper.open(); 
     setRowIdFromIntent(); 
     populateField(); 
    } 

Est-ce que onRestore n'est pas appelé lorsque return onActivityResult() est appelé?

S'il y a un autre moyen de contourner cela, faites le moi savoir.

Répondre

2

OnRestoreInstanceState n'est appelée que lorsque votre activité est créée après sa destruction. Cela peut arriver après le démarrage d'une autre activité, mais si ce n'est pas nécessaire, Android gardera votre ancienne activité en vie le plus longtemps possible.

Le cycle de vie de l'activité peut vous être utile si vous cherchez un moment approprié pour faire votre travail. http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

+0

Bon, alors à la deuxième partie de ma question. Comment est-ce que je contourne ceci, quand j'ai besoin d'extraire des informations de l'ensemble dans onResume()? –

+0

Eh bien, je ne peux pas vraiment répondre à votre question parce que vous n'avez pas publié ce que vous essayiez de faire. Je peux dire, cependant, que l'instance de votre activité sera la même que celle qui était utilisée avant de commencer l'ancienne activité. Ainsi, vous pouvez utiliser les champs de votre classe Activity que vous essayiez de conserver avec onSaveInstanceState dans votre onResume(). En d'autres termes, si vous définissez le champ mRowId comme rowId, vous pouvez utiliser mRowId directement dans votre onResume. Dans votre onRestoreInstanceState, vous pouvez également définir mRowId à partir de l'ensemble. –

Questions connexes