Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Barra de Acción de Android Botón Arriba versus Sistema Botón Atrás

Estoy usando la barra de acción y es "arriba" botón para volver de una actividad de detalle a la actividad principal, que funciona bien. Del mismo modo, el usuario puede presionar el botón "atrás" del sistema para volver a la actividad principal.

En mi actividad principal, en onCreate() datos se descargan desde Internet para mostrarlos al inicio de la aplicación. Me di cuenta de que cuando utilizo la barra de herramientas "arriba" para ir de detalle a la actividad principal, onCreate() se ejecuta, volver a descargar los datos. Pero onCreate() no se ejecuta cuando utilizo el botón de "atrás" del sistema, por lo tanto inmediatamente mostrando la vista de actividad principal.

El código que utilizo en la actividad de detalle para implementar el botón "arriba" es:

 switch (item.getItemId()) { case android.R.id.home: Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return true; 

Me gustaría que el botón "arriba" se comportara como el botón "atrás" y no volver a ejecutar onCreate() . Pero no estoy seguro de cómo hacer que esto suceda, o la ruta de código que el botón "volver" implementa para volver a la actividad principal.

¡Gracias!

  • Barra de acción dividida en Android 5.0 (Lollipop)
  • SearchManager.getSearchableInfo (getComponentName ()) devuelve null
  • Android ActionBar - Presiona la vista personalizada hasta la parte inferior de la pantalla
  • Barra de acción de Android Tres puntos no se muestran
  • ¿Cómo puedo usar una barra de acción contextual con la biblioteca de soporte de Android?
  • Android: setActionView (null) no elimina problemas de vista y anchura en MenuItem con ActionView
  • Número de pestañas en ActionBar
  • "No se encontró ningún identificador de recurso para el atributo 'showAsAction' en el paquete 'android'"
  • 6 Solutions collect form web for “Barra de Acción de Android Botón Arriba versus Sistema Botón Atrás”

    En lugar de iniciar una actividad completamente nueva, simplemente termine la actividad de detalles en la que se encuentra

     switch (item.getItemId()) { case android.R.id.home: finish(); return true; 

    A continuación, volverá a la actividad anterior en la pila de actividades (su actividad principal) y onCreate no se debe llamar

    Creo que una mejor solución se puede encontrar en este post .

    Calling finish() funciona en situaciones específicas pero no siempre puede producir el comportamiento descrito en la documentación, por ejemplo:

    Introduzca aquí la descripción de la imagen

    Llamando

     Intent intent = NavUtils.getParentActivityIntent(this); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); NavUtils.navigateUpTo(this, intent); 

    Volverá a la actividad principal en el estado en el que la dejó. Si tiene una estructura plana de aplicaciones, seguirá actuando igual que el botón Atrás.

    Si desea hacer exactamente lo que Back hace, puede hacer esto:

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

    Tenga en cuenta que la implementación por defecto de onBackPressed() sólo llama a finish() , pero onBackPressed puede onBackPressed .

    Creo que la forma más sencilla es anular el método "getParentActivityIntent" de la actividad de detalle añadiendo el indicador "Intent.FLAG_ACTIVITY_CLEAR_TOP":

     @Nullable @Override public Intent getParentActivityIntent() { Intent intent = super.getParentActivityIntent(); if (intent != null) { return super.getParentActivityIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); } return intent; } 

    Para una verdadera funcionalidad "de inicio", debería ver las demostraciones de api, en "Actividades de aplicaciones / actividades / Reordenar".

    La razón: ¿qué pasa si usted tiene algo como esto: activity1-> activity2-> activity3, y ahora desea ir a activity1 presionando el botón de inicio en la barra de acción?

    Hay otra solución que puede estar a la mano para alguien. Tuve el mismo comportamiento doble cuando el usuario presionó los botones Back y ActionbarBack. Yo estaba bien con el comportamiento Back btn. No quería que se recreara una actividad. Así que anulé el método

      @Override public boolean onSupportNavigateUp() { onBackPressed(); return true; } 

    Funciona bien para mi

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.