2011-01-15 9 views
17

Acabo de empezar a aprender programación en el Android y tengo un problema con el uso de la variable en onSaveInstanceState. Este es mi código:cómo usar la variable en onSaveInstanceState

int resultCode; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    if (savedInstanceState != null) { 
     super.onRestoreInstanceState(savedInstanceState); 

     int resultCode = savedInstanceState.getInt("resultCode"); 
    } 

    Button btnOpenWithResult = (Button) findViewById(R.id.btnOpenWithResult); 
    btnOpenWithResult.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      Intent myIntent = new Intent(flashlight.this, ThirdActivity.class); 
      startActivityForResult(myIntent, 1); 
     } 
    }); 
} 

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

    switch (resultCode) { 
    case 1: 
     /** option 1 */    
     break; 
    case 2: 
     /** option 2 */ 
     break; 
} 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putInt("resultCode", resultCode); 
    super.onSaveInstanceState(savedInstanceState); 
} 

Quiero salvar la variable resultCode usando onSaveInstanceState y después de la reanudación de la actividad una vez más para usarlo ...

(lo siento por mi nivel de Inglés)

+0

ser más específico, ¿qué es exactamente el problema? ¿Intentó asignar valor a resultCode? – fiction

+0

Mi problema es guardar el estado de variable resultCode (cambiar) a onSaveInstanceState. Cuando escribo: savedInstanceState.putInt ("resultCode", resultCode); y después de eso intente utilizar: int resultCode = savedInstanceState.getInt ("resultCode"); entonces variable resultCode está vacío – Cyren

Respuesta

5

Cyren ... 1) No veo ninguna razón para llamar a super.onRestoreInstanceState en onCreate. No tendría sentido hacer esa llamada en el método

public void onRestoreInstanceState(Bundle saved) { 
    super.onRestoreInstanceState(saved); 

2) La declaración:

int resultCode = savedInstanceState.getInt("resultCode"); 

"se oculta" la variable:

int resultCode; 

declarado anteriormente. Entonces, hay dos versiones de la variable resultCode con diferentes ámbitos. Mejor usted se refiere a código:

int resultCode; 

stuff here 

    resultCode = savedInstanceState.getInt("resultCode"); 

Espero que ayude, JAL

Cuestiones relacionadas