2012-06-25 47 views
13

decir que estoy en mi actividad y empezar una nueva actividad¿Verificar si se presionó la tecla Atrás en Android?

MainActivity > NewActivity 

Y desde NewActivity que pulse la tecla Back

MainActivity < NewActivity 

Quiero MainActivity hacer algo si se está visualizando después NewActivity está cerrado, pero no cuando MainActivity se ejecuta normalmente, como cuando se ejecuta por primera vez la aplicación. ¿Alguien sabe si esto es posible?

Respuesta

8

Un par de ideas:

  • Usted sólo puede establecer un indicador en MainActivity cuando se dispara hasta NewActivity.
  • Puede llamar startActivityForResult de MainActivity y se encargará de NewActivity para establecer un resultado, que recibirá en MainActivity.onActivityResult() cuando NewActivity acabados.
+0

Gracias! Usé startActivityForResult, ¡funciona genial! –

0

Cuando comience NewActivity, necesita usar startActivityForResult y utilizar un requestId válido. Tal requestId le será devuelto a onActivityResult una vez NewActivity acabados.

16
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     Log.d(this.getClass().getName(), "back button pressed"); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

@Update. Si desea que se le avise cuando termine NewActivity, debe iniciarlo por startActivityForResult (Intent, requestCode). Luego, debe anular onActivityResult() en MainActivity. Compruebe aquí el parámetro del código de solicitud, si el código de retorno es igual al código de envío (cuando inicia childActivity), coloque un código para hacer su trabajo.

int MYCODE=1000; 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Result OK.d. 
    if (requestCode == MYCODE) { 
     // do something good 
    } 
} 
+0

¿No se limitaría a escuchar si se presiona el botón Atrás? –

+0

Si solo desea escuchar el botón Atrás, use los primeros códigos recortados. –

6

Puede reemplazar el método onBackPressed() en NewActivity que detectará cuando se pulsa el botón de regreso. Y luego, para informar a MainActivity al respecto, puede enviar un indicador booleano en un paquete para que MainActivity detecte su apertura después de NewActivity.

En NewActivity:

 @Override 
     public void onBackPressed() { 
       boolean fromNewActivity=true; 

     Intent mainIntent = new Intent(view.getContext(), MainActivity.class); 
     Bundle bundleObj = new Bundle(); 
     bundleObj.putString("fromNewActivity", Boolean.toString(fromNewActivity)); 
     mainIntent.putExtras(bundleObj); 
     startActivityForResult(mainIntent, 0); 
      } 

En MainActivity en onCreate() Método:

 Bundle extras = getIntent().getExtras(); 
     boolean fromNewActivity =Boolean.parseBoolean(extras.getString("fromNewActivity")); 

Ahora puede comprobar si se abre la MainActivity después NewActivity o no.

8

Intento el siguiente método para detectar el botón Atrás presionado en la barra de acción en actividad por el primer método y el segundo se usa para detectar el botón de hardware móvil hacia atrás o el botón de matar actividad.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()){ 
     case android.R.id.home: 
      onBackPressed(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

@Override 
public void onBackPressed() { 
    setResult(RESULT_CANCELED); 
    super.onBackPressed(); 
} 
Cuestiones relacionadas