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
- ¿El nombre de la actividad principal debe ser .MainActivity?
- Cómo cambiar la barra de título de la ventana de personalización y su icono para múltiples actividades
- Iniciar de forma programática la actividad "Agregar una cuenta de Google" en Android
- La actividad de lanzamiento de la actividad de preferencia provoca la excepción de denegación de permisos
- Determine el estado vacío del fragmento backstack en android
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.
- OnEnterAnimationComplete () no se llama después de una transacción de actividad
- Distinguir entre presionar el botón "inicio" y abrir otra Actividad
- Android no mata actividades de pila cuando la memoria es baja
- Cambiar la actividad a AppCompatActivity utiliza más memoria RAM?
- ¿Es importante el número de actividades en la aplicación para Android?
- Debería tener referencias a fragmentos dentro de mi actividad
- ¿Android restaura los extras de Intent cuando reanuda Actividad?
- Problema "La prueba del repositorio tiene un error" al intentar importar el proyecto de bitbucket al android studio
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.
- Xamarin Form Master Página de detalles que no se muestra
- Android cola las solicitudes de HTTP mientras la red no está disponible y procesa cuando se enciende