Android, Intent.FLAG_ACTIVITY_CLEAR_TOP parece que no funciona?
En mi menú tengo algunos artículos. Inicio es un elemento del mismo que quiero ser la raíz de mi aplicación y cada vez que el usuario hace clic en él, Android claro pila y luego volver a la pantalla principal.
Este es mi código:
- Android - Cómo detener la animación entre los cambios de actividad
- OverridePendingTransition no funciona cuando se utiliza FLAG_ACTIVITY_REORDER_TO_FRONT
- Intent es muy lento para lanzar una nueva Actividad 🙁
- Diseño del material layout_scrollFlags significado
- Pregunta de Android: WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
menu.setOnItemClickedListener(new MenuClickedListener() { public void eventOccured(int id) { Intent intent = null; switch(id) { case 1: intent = new Intent(context, More.class); break; case 2: intent = new Intent(context, FavoriteScreen.class); break; case 3: intent = new Intent(context, VideoShowList.class); break; case 4: intent = new Intent(context, ShoppingList.class); break; case 5: intent = new Intent(context, MainScreen.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); break; } if(intent != null) context.startActivity(intent); } });
Menú funciona bien, pero parece que la bandera no funciona porque desde la pantalla de inicio, voy a la segunda y tercera pantalla a continuación, haga clic en Inicio tema del menú y volver a la pantalla de inicio. Ahora, cuando hago clic en el botón de regreso, voy a la tercera pantalla, la segunda pantalla y la pantalla de inicio.
He diseñado este menú como widget para configurarlo una vez y reutilizarlo en todas mis pantallas.
Cualquier sugerencia sera apreciada. Gracias.
- ¿Para qué se usan las banderas?
- ¿Cuál es la diferencia entre: notification.flags y notification.defaults?
- Android: Intent Flag para destruir la actividad y comenzar una nueva
- Indicadores de intención: cómo iniciar una nueva instancia de actividad y tener otros cerrados
- Deshabilitar la pantalla de mantenimiento
- Android: uso de FLAG_ACTIVITY_NEW_TASK
- ¿Qué es un evento de presionar las mejillas?
- ¿Cómo comprobar los indicadores de gravedad en una vista Android personalizada?
Intente usar este intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
inplace of intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent intent = new Intent(getApplicationContext(), yourActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);
He intentado Intent.FLAG_ACTIVITY_CLEAR_TOP Pero no tengo la solución adecuada por lo que finalmente esto me ayuda
Intent intent = new Intent(getApplicationContext(), LoginActivity.class); ComponentName cn = intent.getComponent(); Intent mainIntent = IntentCompat.makeRestartActivityTask(cn); startActivity(mainIntent);
Intent intent = new Intent(getApplicationContext(), LoginActivity.class); ComponentName cn = intent.getComponent(); Intent mainIntent = IntentCompat.makeRestartActivityTask(cn); startActivity(mainIntent);
Esto borra toda la pila y ejecuta sólo LoginActivity
Lea una vez y nunca tendrá el problema en el uso de flag_activity_clear_top
Aquí hay una simple aclaración con respecto al uso de Flag_Activity_Clear_Top.
One Liner Formula para su uso correcto:
Siempre borra las Actividades intermedias (si las hay) entre la actividad que llama y la actividad llamada.
Aquí hay un flujo de actividad:
Actividad A -> Actividad B -> Actividad C (usar la actividad de la bandera para ir a D) -> Actividad D
En la secuencia anterior cuando llegamos a D si pulsamos hacia atrás entonces obtendremos la Actividad C-> Actividad B-> Actividad A , ya que no hay ACTIVIDAD INTERMEDIA entre Actividad C y Actividad D
Mito de algunos desarrolladores aquí es –
Después de alcanzar la actividad D usando la actividad de la bandera despejando la parte superior de C, esperaban que al pulsar la tecla de regreso de D los llevaran fuera de la aplicación, lo cual nunca ocurrirá .
Flag_Activity_Clear_Top siempre borra siempre las ACTIVIDADES INTERMEDIAS ENTRE LAS DOS ACTIVIDADES SI CUALQUIERA
Todo parece estar bien, explicando cómo
Si ya hay una instancia del tipo de actividad llamada presente en la pila, esta instancia se lleva al primer plano en lugar de crear una nueva instancia. Además, todas las actividades de la pila que residen en la parte superior de esa instancia se borran de la pila.
Por ejemplo, suponiendo que la pila de actividad actual es ABCDE, E que inicia una actividad C (con la parte superior clara de la bandera) eliminará las actividades D y E de la tarea y dará lugar a la pila ABC .
Si desea iniciar una Actividad para que sea la única existente (es decir, borre toda la backstack ), utilice los siguientes indicadores:
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
Requiere API-Level> = 11.
Me enfrenté al mismo problema, mi problema era que la actividad en el intento tiene launchMode = "singleInstance". cambiado a singleTask y el código funcionó como debería.
tal vez esto funciona:
intent = new Intent(getApplicationContext(), MainScreen.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- Manera correcta de encadenar 2 tareas asíncronas en android
- HttpUrlConnection se comporta diferente en Android 2.3 Gingerbread