Android cómo terminar una actividad de otra actividad

En mi aplicación tengo 3 actividades.

Desde la 1ª actividad pasa al 2º y desde el 2º pasa al 3º. A partir del 3º, llegará al 1º de nuevo. y si presiono la tecla Atrás desde la 1ra, debería ir a la pantalla de inicio (la aplicación se detendrá). Si presiono la tecla de retroceso del 1er, va a la segunda actividad nuevamente y si presiono la tecla de retroceso del 2do, entonces pasa al 1er. Luego, si presiono la tecla hacia atrás de 1st, la aplicación se detiene.

Lo que quiero, cuando estoy en 3ª actividad y presiono el botón Atrás, debería ir al 1.º y al mismo tiempo terminar la 2ª actividad.

¿Cómo puedo hacer eso?

acaba la segunda actividad cuando abres la tercera actividad

supongamos que en la segunda actividad en un botón, haga clic en que está abriendo una tercera actividad usando la actividad de inicio;

startActivity(intent); finish();//this will finish second activity and open third activity so when you press back from third activity it will open first activity. 

si quieres depende de alguna condición, entonces en la actividad

 setResult(123); 

algo como este código

ahora cuando anula onActivityResult en la segunda actividad

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==123){ //finish } } 

también asegúrese de que algo necesita usar startActivityForResult (intent, requestCode); para el resultado en la segunda actividad para comenzar la tercera actividad.

 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Activity2 extends Activity{ Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivityForResult(new Intent(new Intent(Activity2.this,Activity3.class)), 12); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(resultCode==123 && requestCode==12){ finish(); } super.onActivityResult(requestCode, resultCode, data); } } import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Activity3 extends Activity{ Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setResult(123); } }); } } 

Cuando comience su tercera actividad, debe llamar a su segunda actividad de esta manera:

startActivityForResult(intent, 0)

Cuando termine su tercera actividad, debe incluir:

 setResult(RESULT_OK); finish(); 

Envía una señal de la 3ª actividad a la 2ª.

En el 2do puesto:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { finish(); } 

Recibe esta señal y finaliza la segunda actividad.

Deberías lanzar la primera actividad en la 3ª actividad con la bandera de cleartop cuando necesites finalizar la 2ª actividad.

 class ThirdActivity extends Activity { .... if (somecondition) { /* directly go to FirstActivity, finish all intermediate ones.*/ Intent intent = new Intent(this, FirstActivity.Class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } else { finish(); // to simply return to 2nd activity. } ..... .... } 

Alternativamente, podría establecer un indicador de intención llamado FLAG_ACTIVITY_NO_HISTORY en la 2da Actividad. De esta forma, no se guarda en la stack de historial, de modo que cuando navegue desde la tercera actividad irá directamente a la 1ra.

P.ej

 Intent intent = new Intent(this, SecondActivity.Class); intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(intent); 

Esto significa que cuando inicie una actividad desde SecondActivity SecondActivity finalizará automáticamente.

Usando esta forma: en su primera actividad, declare un objeto Activity así,

 public static Activity fa; onCreate() { fa = this; } 

ahora usa ese objeto en otra actividad para terminar la primera actividad como esta,

 onCreate() { FirstActivity.fa.finish(); } 

Más información: finalizar una actividad de otra actividad