Eliminar manualmente las actividades de la pila de aplicaciones para Android

He estado trabajando en Android Native App, Lo que estaba tratando de hacer es:

Activities - A -> B -> C Then A-> B -> C -> C . 

De C Actividad si vuelve a apuntar a C entonces quiero quitar C, B de la pila manualmente. En mi espalda debe moverse sólo a.

Traté de terminar () pero el problema es:

 Activities - A -> B -> C Then A-> B -> C -> C on finish A -> B -> C required state A-> C . 

¿Alguien sabe coger todas las actividades en la pila y eliminar las actividades específicas de la pila?

En Actividad C, anule onBackPressed y agregue algo como:

 @Override public void onBackPressed() { if (shouldGoBackToA) { // There are various ways this could be set Intent intent = new Intent(this, AActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } else { finish(); } } 

FLAG_ACTIVITY_CLEAR_TOP hará que pase por la pila a la copia existente de A Activity en lugar de iniciar una nueva. De los documentos :

Public static final int FLAG_ACTIVITY_CLEAR_TOP
Si se establece, y la actividad que se está iniciando ya se está ejecutando en la tarea actual, entonces en lugar de iniciar una nueva instancia de esa actividad, todas las otras actividades en la parte superior de la misma se cerrará y esta Intención se entregará a la (ahora en Arriba) actividad antigua como una nueva Intención.

Mientras llaman intención pasar una bandera llamada actvity clear top como este:

 Intent newIntent=new Intent(this,MainActivity.class); newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(newIntent); 

Puede usar esto: En una actividad mientras pasa a la actividad B, la intención debe agregarse con un flag FLAG_ACTIVITY_NO_HISTORY como este,

 Button b=(Button) findViewById(R.id.button1); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent newIntent=new Intent(AActivity.this,Bactivty.class); newIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(newIntent); } }); 

Mientras se mueve a CActivity:

 Button b = (Button) findViewById(R.id.button1); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent newIntent = new Intent(Bactivty.this, CActivity.class); startActivity(newIntent); } }); 

En la contrapresión le llevará a AActivity ahora.

Paso 1: Inicie activty para el resultado A -> B -> C1 -> C2 .. Llame a su actividad con startActivityForResult

 Intent intent = new Intent(yourActivity.this, nextActivity.class); startActivityForResult(intent, 1); 

Paso 2: En C2 especifique que desea volver a A .. Siempre que haya terminado con su actividad escriba el siguiente código

 Intent i = getIntent(); i.putString("Result","GottoA"); setResult(Activity.RESULT_OK, i); finish(); 

Paso 3: Siempre que termine C2, se llama a onActivityResult de la actividad de la pila de previsus . Así que puede comprobar en C1 y B onActivityResult si ha fijado cualquier resultado bck .. y terminar en consecuencia e impliment el siguiente código en la Actividad B yc

  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Intent i = getIntent(); if (resultCode == RESULT_OK && i.getString("Result","null").equals"GottoA") { i.putString("Result","GottoA"); setResult(RESULT_OK, i); finish(); } } 

Este ejemplo completo puede ayudarle …

 public class ActivityA extends Activity { public static final int ID_TEXTVIEW = 0xDEAF1; public static final int ID_BUTTON = 0xDEAF2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View contentView = getContentView(this); TextView textView = (TextView) contentView.findViewById(ID_TEXTVIEW); textView.setText("ActivityA"); setContentView(contentView); final Button button = (Button) contentView.findViewById(ID_BUTTON); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(ActivityA.this, ActivityB.class); startActivity(intent); } }); } public static View getContentView(Context context) { LinearLayout layout = new LinearLayout(context); layout.setOrientation(LinearLayout.VERTICAL); layout.setGravity(Gravity.CENTER); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); layoutParams.gravity = Gravity.CENTER_HORIZONTAL; TextView textView = new TextView(context); textView.setLayoutParams(layoutParams); textView.setId(ID_TEXTVIEW); layout.addView(textView); Button button = new Button(context); button.setText("Next"); button.setLayoutParams(layoutParams); button.setId(ID_BUTTON); layout.addView(button); return layout; } } public class ActivityB extends Activity { public static final String ACTION_FINISH = "com.myapp.test2.ACTION_FINISH"; public ActivityB() { } private FinishReceiver finishReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View contentView = ActivityA.getContentView(this); final TextView textView = (TextView) contentView .findViewById(ActivityA.ID_TEXTVIEW); textView.setText("ActivityB"); setContentView(contentView); final Button button = (Button) contentView .findViewById(ActivityA.ID_BUTTON); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(ActivityB.this, ActivityC.class); startActivity(intent); } }); finishReceiver = new FinishReceiver(); IntentFilter filter = new IntentFilter(ACTION_FINISH); registerReceiver(finishReceiver, filter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(finishReceiver); } private class FinishReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ACTION_FINISH)) { finish(); } } } } public class ActivityC extends Activity { public ActivityC() { } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View contentView = ActivityA.getContentView(this); final TextView textView = (TextView) contentView .findViewById(ActivityA.ID_TEXTVIEW); textView.setText("ActivityC"); setContentView(contentView); final Button button = (Button) contentView.findViewById(ActivityA.ID_BUTTON); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(ActivityB.ACTION_FINISH); sendBroadcast(intent); intent = new Intent(ActivityC.this, ActivityC.class); startActivity(intent); finish(); } }); } } 

En Actividad C, cuando se pulsa el botón Atrás, empieza la actividad A de la siguiente manera:

 @Override public void onBackPressed() { Intent intent = new Intent(getApplicationContext(), A.class); intent.putExtra("EXIT", true); startActivity(intent); } 

Entonces en OnCreate de la Actividad A () haz esto

 if (getIntent().getBooleanExtra("EXIT", false)) { finish(); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.