¿Comprobar si la tecla de la parte posterior fue presionada en androide?

Decir que estoy en mi actividad principal y comenzar una nueva actividad

MainActivity > NewActivity 

Y desde NewActivity la tecla de retroceso

 MainActivity < NewActivity 

Quiero que MainActivity haga algo si se muestra después de que NewActivity esté cerrada, pero no cuando MainActivity se ejecute normalmente, como cuando ejecuta la aplicación por primera vez. ¿Alguien sabe si esto es posible?

Un par de ideas:

  • Sólo puede establecer un indicador en MainActivity cuando se NewActivity .
  • Puede llamar a startActivityForResult de MainActivity y disponer que NewActivity configure un resultado, que recibirá en MainActivity.onActivityResult() cuando NewActivity termine.
 @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); } 

@Actualizar. Si desea que se le avise cuando NewActivity está terminado, debe iniciarlo por startActivityForResult (Intent, requestCode). A continuación, debe anular onActivityResult () en MainActivity. Compruebe el parámetro requestcode aquí, si el código de retorno es igual al código de envío (cuando inicia childActivity), ponga un código para hacer su negocio.

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

Puede sobrescribir el método onBackPressed () en NewActivity que detectará al pulsar el botón Atrás. A continuación, para informar a MainActivity acerca de ello, puede enviar un indicador booleano en un lote para que MainActivity detecte que 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 el método onCreate ():

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

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

Intento el siguiente método para detectar el botón de retroceso presionado en la barra de acción en actividad por el primer método y el segundo se utiliza para detectar el botón de botón de hardware móvil o botón de actividad de matar.

 @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(); } 

Cuando inicie NewActivity necesitará usar startActivityForResult y usar un requestId válido. Este requestId se le devolverá a onActivityResult una vez que NewActivity termine.

  • Uso de PreferenceFragment y arquitectura
  • Cómo probar unidades de manejo de texto bidireccional
  • Convertir colorPrimary a colorPrimaryDark (cuánto más oscuro)
  • Keytool Signing Problem: Keystore fue manipulado, o la contraseña fue incorrecta
  • ¿Qué versiones de GLSL puedo usar en OpenGL ES 2.0?
  • TextView setGravity () no funciona en java
  • ¿Cómo puedo ejecutar esta clase en el hilo de interfaz de usuario?
  • ¿Cómo manejar tanto los resultados del cuadro de búsqueda rápida como las sugerencias recientes de búsqueda?
  • ¿Cómo uso el ActionBar en las versiones anteriores de Android?
  • ¿Por qué los emuladores de Android se numeran como 5554
  • Mockito con Robolectric: "ClassCastException se produjo al crear el proxy"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.