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.

  • ANR en el uso aleatorio de la aplicación
  • Javascript para detectar el ancho de la pantalla del navegador móvil?
  • Android DisplayMetrics devuelve un tamaño de pantalla incorrecto en píxeles en ICS
  • Cómo añadir el AdSense a mis aplicaciones
  • El texto de la etiqueta no se está actualizando en los niños de tableview en el trabajo de android.but de titanio en IOS
  • ¿Cómo puedo cerrar BluetoothSocket en la rotación de la pantalla en Android?
  • 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!

  • Corotinas de Kotlin de la manera correcta en Android
  • Texto que no se muestra en la superposición de MapView
  • Recuperar la carátula del álbum utilizando FFmpeg
  • Error de "archivo de paquete no firmado correctamente": detecte si ocurre o no con la aplicación de Google Play.
  • Android en la aplicación robotmedia: Restaurar transacciones
  • ¿Cuáles son los valores de retorno válidos para una interfaz Javascript en un WebView de 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.