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


Cómo borrar la pila del historial de actividades al pulsar el botón de inicio?

¡Hola a todos!

Estoy escribiendo una aplicación que tiene dos "modos"; Un modo de vista y un modo de edición . La aplicación expone dos actividades principales / lanzador (por ejemplo, A y D ) que a su vez tienen sus propias cadenas de actividad ( B , C y E , F respectivamente). Las dos actividades de punto de entrada A y D expondrán dos iconos con etiquetas separadas en la pantalla de inicio y las dos cadenas nunca se cruzarán, es decir, una vez que inicie la aplicación en un modo de vista con actividad A , la única ruta puede caminar hacia adelante y hacia atrás Es A , B , C y si inicia la aplicación en modo de edición con la actividad D , la única cadena de actividad disponible es D , E , F.

Ahora, mi problema es que si iniciar la aplicación en, por ejemplo, modo de visualización (cadena de actividad A , B , C ) y presione el botón Inicio de cualquier actividad en esa cadena vuelvo a la pantalla de inicio (por supuesto), pero si entonces Volver a iniciar la aplicación en el modo de edición (cadena de actividad D , E , F ) Voy a la actividad que estaba al presionar el botón Inicio (es decir, una actividad en la cadena equivocada) – no el punto de entrada previsto para el modo de edición ; Actividad D.

  • Facebook api en android: pantalla en blanco en lugar de auth
  • El método Android ArrayAdapter.Add no funciona
  • No se puede usar dex2jar en mi mac: permission denied
  • Añadir espacio a la parte superior e inferior de GridView
  • Android: cómo programar el ancho de ImageView dentro de TableRow
  • Añadir icono con el título en CollapsingToolbarLayout
  • ¿Cómo puedo solucionar esto?

    He intentado varias combinaciones de android:noHistory , android:clearTaskOnLaunch y otros atributos en AndroidManifest.xml para las actividades involucradas. Pero sólo parecen afectar la actividad misma, no toda la cadena.

    Quiero quitar toda la cadena de actividades ( A , B , C o D , E , F ) de la pila de historial cuando se presiona el botón Inicio pero aún así mantener la pila intacta mientras todavía estoy en la cadena Para poder presionar el botón de regreso de, por ejemplo, la actividad B y llegar a la actividad A ).

  • Aplicación de Android Recuperar datos del servidor pero de forma segura
  • El lugar correcto para poner archivos mp3 en un proyecto android
  • ¿Cómo usar StateListAnimator?
  • No se puede llamar al método notifyItemInserted en una devolución de llamada de desplazamiento recyclerview-v7: 24.2.0
  • Cambiar el color de fondo de edittext en android
  • ¿Cómo puedo utilizar un icono en lugar de un título en la barra de herramientas de Android?
  • 3 Solutions collect form web for “Cómo borrar la pila del historial de actividades al pulsar el botón de inicio?”

    Parece que necesitas usar el indicador Intent.FLAG_ACTIVITY_CLEAR_TOP en tus actividades domésticas, pero por supuesto no puedes añadir estas banderas en el archivo AndroidManifest.xml. Tal vez debería tener un único punto de entrada que luego inicia la Activity correcta – puede utilizar un alias de actividad para que parezca dos puntos de entrada para el usuario.

    Por ejemplo – usted define las actividades en su archivo de manifiesto:

      <activity-alias android:label="@string/edit_app_name" android:name="launch_edit" android:targetActivity=".activities.LaunchActivity"> <meta-data android:name="launch_type" android:resource="@string/launch_edit" /> </activity-alias> <activity-alias android:label="@string/view_app_name" android:name="launch_view" android:targetActivity=".activities.LaunchActivity"> <meta-data android:name="launch_type" android:resource="@string/launch_view" /> </activity-alias> 

    Entonces en su LaunchActivity usted tiene:

     ActivityInfo activityInfo = getPackageManager().getPackageInfo( this.getComponentName(), PackageManager.GET_ACTIVITIES|PackageManager.GET_META_DATA); int launchTypeResource = activityInfo.metaData.getInt("launch_type"); String launchType = context.getString(launchTypeResource); if(launchType == null) { // handle error throw new Exception(); } Intent newIntent; if(launchType.equals(context.getString(R.string.launch_view)) { newIntent = createIntent(ViewActivity.class); } else if(launchType.equals(context.getString(R.string.launch_edit)) { newIntent = createIntent(EditActivity.class); } newIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(newIntent); 

    Utilice el siguiente método al presionar el botón de inicio:

     Intent intent=new Intent(this, HomeClass.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); 

    Usted podría considerar el uso de sólo una Activity para cada cadena (que sería sólo A y D ).

    A continuación, implemente el contenido de A , B y C y D , E y F como Fragmentos y simplemente cambie el Fragmento mostrado en la Activity al navegar hacia adelante y hacia atrás.

    Combine esto con android:noHistory y debe obtener el efecto deseado – aunque requeriría un poco de reescritura y que incluya el paquete de compatibilidad en su proyecto si tiene previsto apuntar a la versión anterior Honeycomb.

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