2011-10-17 13 views
5

Tengo una actividad que se reanuda después de que un usuario elige un contacto. Ahora, antes de que el usuario seleccione un contacto en SavedInstanceState se llama y pongo una cadena en el paquete. Ahora, después de que el usuario selecciona el contacto y se devuelven los resultados. onRestoreInstanceState no se llama. solo onResume() se llama. Entonces, ¿cómo voy a sacar mi cadena del paquete una vez que la actividad se reanude?Cómo extraer cadena del paquete en onResume()?

+0

echa un vistazo a esta pregunta: http://stackoverflow.com/questions/2497205/how-to-return-a-result-startactivityforresult-from-a-tabhost-activity – slayton

+0

No obtengo lo que esto tiene que ver con mi pregunta –

Respuesta

5

Digamos que tiene dos actividades A y B, y la Actividad A inicia la actividad B. Si desea pasar información de A a B, puede pasar información de A a B con:

Intent i = new Intent(this. ActivityB.class); 
i.putExtra("Key","Value"); 
startActivity(i); 

Entonces en la actividad B se puede obtener la cadena con

String value = this.getIntent().getExtras().getString("keyName"); 

Sin embargo, si quieres pasar información de B a a usted tiene que utilizar un método diferente. En lugar de usar startActivity, necesita usar startActivityForResult. Una descripción de este método se encuentra aquí: How to return a result (startActivityForResult) from a TabHost Activity?

+0

No hay un método getBundle para getIntent() –

+0

Verifique mi respuesta – dymmeh

+0

Entonces, ¿no hay forma de obtener el paquete Actividades fuera de onSavedInstanceState, onCreate y onRestoreInstanceState? –

3

En primer lugar, ¿por qué no se está disparando onRestoreInstanceState: De acuerdo con la documentation, onRestoreInstanceState se llama después onStart(), que, de acuerdo con el activity lifecycle diagram, solamente es llamada después de onCreate o onRestart. Si su actividad principal no se destruye cuando el usuario va a elegir un contacto, entonces onStart nunca se activará, y onRestoreInstanceState nunca se activará. El diagrama muestra que este es el caso cuando "Otra actividad se produce en frente de la actividad", y se activa OnPause: desde allí, su actividad solo se eliminará si el sistema necesita más memoria.

En segundo lugar, cómo obtener los datos que ha guardado antes de elegir un contacto- Una variable local debería hacerlo, ya que la actividad permanece en la memoria. Si llega al punto en que la actividad no está en permanezca en la memoria, onRestoreInstanceState debe activarse.

+0

Muchas gracias. Tu última parte fue muy beneficiosa para lo que estoy tratando de hacer –