Activities II

Guardar estado
- Si la aplicación se destruye y se vuelve a crear se pierden datos de interfaz.
- Debemos sobreescribir métodos:
- onSaveInstanceState(Bundle)
- onRestoreInstanceState(Bundle)
Bundle
- Elemento para almacenar valores
- Pares llave-valor
- putXX(String key, XX value)
- getXX(String key)
- Para transferir datos:
- Intents -> putExtras(...)
- Mi aplicación (destroy() -> create())
- ...
- Tipos de datos primitivos
onSaveInstnaceState()
- Hace falta super()
@Override
protected void onSaveInstanceState(Bundle outstate){
super.onSaveInstanceState(outstate);
TextView t = (TextView) findViewById(R.id.textView);
outstate.putString("result", t.getText().toString());
Log.v("result", t.getText().toString());
}
onRestoreInstanceState()
- Hace falta super()
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState){
super.onSaveInstanceState(savedInstanceState);
TextView t = (TextView) findViewById(R.id.textView);
t.setText(savedInstanceState.getString("result"));
Log.v("retrieving",savedInstanceState.getString("result"));
}

Ejercicio
- Salvar el estado de la calculadora para que cuando se destruya y se vuelva a crear no se pierda ningún dato (ej: girar pantalla).
- Utilizar estos dos métodos:
- onSaveInstanceState(Bundle);
- onRestoreInstanceState(Bundle);
Activity con resultado
- startActivityForResult(Intent, int request);
- onActivityResult(int request, int result, Intent i );
- Cámara de fotos, obtener contacto...
// Crea un intent para seleccionar a un contacto
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
private void pickContact() {
startActivityForResult(intent, PICK_CONTACT_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Si la petición se hizo correctamente y PICK_CONTACT_REQUEST
if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {
// Hacemos la consulta del nombre del contacto.
Cursor cursor = getContentResolver().query(
data.getData(),
String[] {Contacts.DISPLAY_NAME}, null, null, null
);
if (cursor.moveToFirst()) {
// True si el cursor no está vacío
int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
String name = cursor.getString(columnIndex);
Toast.makeText(this, name).show();
}
}
}
Activities II
By marcos_perez
Activities II
- 691