Finalizar actividad en BackStack – Android

En mi aplicación tengo actividades A, B, C, D y E. La primera actividad es A, luego la apertura B y luego C y D. Ahora mi pila trasera es ABCD. Ahora cuando me muevo a E de DI quiero terminar toda la actividad en la pila trasera y ahora E debería ser la primera actividad en la pila.

En mi caso

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

o

 android:launchMode="singleTask" 

No funcionó, porque no estoy reabriendo una actividad que ya está abierta. Tengo que cerrar toda la actividad en backstack al abrir una nueva actividad.

Por favor, ayúdame a hacer esto.

Respuesta final editada

ActivitA Importante

  import java.util.Calendar; import android.os.Bundle; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.view.View; import android.widget.Button; public class ActivityA extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent().getBooleanExtra("EXIT", false)) { startActivity(new Intent(ActivityA.this,ActivityE.class)); finish(); } setContentView(R.layout.alayout); Button play; play = (Button) findViewById(R.id.aId); play.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(ActivityA.this,ActivityB.class)); } }); } } 

ActividadB

  import java.util.Calendar; import android.os.Bundle; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.view.View; import android.widget.Button; public class ActivityB extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent().getBooleanExtra("EXIT", false)) { finish(); } setContentView(R.layout.blayout); Button play; play = (Button) findViewById(R.id.bId); play.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(ActivityB.this,ActivityC.class)); } }); } } 

ActividadC

 import java.util.Calendar; import android.os.Bundle; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.view.View; import android.widget.Button; public class ActivityC extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent().getBooleanExtra("EXIT", false)) { finish(); } setContentView(R.layout.clayout); Button play; play = (Button) findViewById(R.id.cId); play.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(ActivityC.this,ActivityD.class)); } }); } } 

ActividadD Importante

 import java.util.Calendar; import android.os.Bundle; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.view.View; import android.widget.Button; public class ActivityD extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent().getBooleanExtra("EXIT", false)) { finish(); } setContentView(R.layout.dlayout); Button play; play = (Button) findViewById(R.id.dId); play.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(),ActivityA.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("EXIT", true); startActivity(intent); finish(); } }); } } 

Actividad

 import java.util.Calendar; import android.os.Bundle; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.view.View; import android.widget.Button; public class ActivityE extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent().getBooleanExtra("EXIT", false)) { finish(); } setContentView(R.layout.elayout); Button play; play = (Button) findViewById(R.id.eId); play.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //startActivity(new Intent(ActivityE.this,ActivityE.class)); } }); } } 

Solo haz esto

Establezca los siguientes indicadores:

 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK Intent.FLAG_ACTIVITY_CLEAR_TASK); 

FLAG_ACTIVITY_CLEAR_TASK está disponible en api 11.

Utilice el siguiente código en ActivityE … no utilice Intent.FLAG_ACTIVITY_NEW_TASK

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

Utilice el acabado abajo. Por ejemplo: A-> B-> C-> D de D en lugar de C si desea mover a B, a continuación, use finish() below.For otros dejar como está o también puede utilizar

android:noHistory="true" in manifest.

es decir

 Intent i=new Intent(C.this,D.class); startActivity(i); finish(); 

Si hace clic de nuevo en D, la actividad C no se desplazará. Se salta a la actividad de B a menos que si no le dio finish(); Si declaró finish() en B, luego saltar a una activity.Similarly puede hacerlo. O también puedes usar android:noHistory="true"

Comenzar Actividad desactivación en Android

Si tu puedes hacerlo.

 While moving from A -> B, finish() A, and move to B. While moving from B -> C, finish() B, and move to C. While moving from C -> D, finish() C, and move to D. While moving from D -> E, just move to E. (dont finish activity D) 

De esta manera, D será la primera actividad en la pila.

prueba esto

  Intent i = new Intent(CurrentActivity.this,NextActivity.class); // Closing all the Activities i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // Add new Flag to start new Activity i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Staring NewActivity startActivity(i); finish(); 

android:noHistory="true" en el manifiesto.

Mientras se mueve a la actividad E no termina su actividad D. significa quitar su línea de bandera Intent.FLAG_ACTIVITY_NEW_TASK

solo escribe

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

Y agrega la línea android:noHistory="true" en tu manifiesto.

  • ¿Cómo saber cuándo una actividad finaliza un pase de diseño?
  • Android muestra teclado suave cuando el fragmento onResume
  • Inhabilitación del cajón derecho sólo en fragmentos específicos
  • Cajón de navegación, problemas de concepto
  • Public static variable o use putExtra método de clase de intención
  • Evitar que el androide recupere la pila de actividades después de un accidente
  • Android: Actividad de configuración de Widget de aplicación no se comporta como Actividad (Editado desde: Android: AppWidget no incrustado en la pantalla de inicio)
  • ¿Cómo abrir la actividad transparente de UnityPlayerActivity?
  • Uso de la actividad de no producción para probar con Android Studio
  • A qué error se refiere esto: "new_window_surface devuelve 0x3000"
  • Restaurar historial y página actual al reanudar la visualización web
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.