2011-08-26 18 views
8

En mi aplicación, necesito iniciar SelectionActivity para seleccionar una de las opciones. Una vez que se ha seleccionado la opción, necesito actualizar otra lista en MainActivity.Detecta que una actividad se ha cerrado en Android

Este es el código que utilizo para poner en marcha el SelectionActivity:

Intent intent = new Intent(MainActivity.this, SelectionActivity.class); 
startActivity(intent); 

En SelectionActivity este es el código que recibe la opción seleccionada se cierra la actividad:

selectedValue = adapter.getItem(position); 
finish(); 

Ahora la aplicación viene volver a MainActivity, pero no sé cómo recibir un evento que SelectionActivity haya cerrado.

Gracias

Respuesta

0

startActivityForResult(), a continuación, reemplazar el método onActivityResult(). Hay muchos ejemplos en los que se puede buscar solo la palabra clave startactivityforresult.

0

Utilice onActivityResult() o establezca selectedValue static. En MainActivity utilizar el método onResume:

protected void onResume() { 
    if(SelectionActivity.selectedValue != 0) 
      newValue = SelectionActivity.selectedValue; 
} 
1

Dependiendo del diseño de la aplicación se puede actualizar la lista cada vez que la actividad principal se devuelve a observando los acontecimientos onResume() o onRestart(). Además, está startActivityForResult(). Todos estos métodos están en Actividad.

1

Solución 1:

  1. Hacer selectedValue una variable pública estática.
  2. En su MainActivity:

    void onResume() { 
         result = SelectionActivity.selectedValue; 
    } 
    

Solución 2:

Si el trabajo del SelectionActivity 's no es más que una selección entre varias opciones, considere el uso Dialogs

12

fragmento rápida mostrando el uso de startActivityForResult:

private static final int MY_REQUEST_CODE = 0xe110; // Or whatever number you want 
// ensure it's unique compared to other activity request codes you use 

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

    if (requestCode == MY_REQUEST_CODE) 
     ActiviyFinishedNowDoSomethingAmazing(); 
} 

public void onClickStartMyActivity(View view) 
{ 
    startActivityForResult(new Intent(this, GameActivity.class), MY_REQUEST_CODE); 
} 

Más información en getting a result from an activity.

+0

¿Has elegido 0xe110 solo arbitrariamente? – Mikepote

+1

Sí, es arbitrario. Idealmente debería ser una constante - ¡Lo actualizaré para mostrar esto! – noelicus

Cuestiones relacionadas