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:

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.

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 introduzca la descripción de la imagen aquí

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); 
  • ¿Cómo evitar la pantalla en negro en startActivity cuando se establece FLAG_ACTIVITY_CLEAR_TASK?
  • Cómo agregar banderas con mi intención en el archivo de manifiesto
  • ¿Qué bandera usar en SimpleCursorAdapter?
  • Actividad.finishAffinity () vs Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
  • Intención de iniciar la actividad - pero no llevar al frente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.