У меня есть четыре активности, то есть A, B, C и D. A запускает B, B запускает C, C запускает D. Когда C запускает D, я хочу уничтожить активность B в зависимости от ситуации (логика для этого останется в активность C), так что, когда я вернусь из D, он будет следовать по пути D-> C-> A. Итак, я хочу уничтожить активность B из C. Как это возможно?
Как уничтожить предыдущую активность в Activity?
Ответы (5)
завершить действие B, когда вы вызываете действие C, зависит от вашей логики. Например
if(true){
Intent in = new Intent(B.this,c.class);
startActivity(c);
}
else
{
Intent in = new Intent(B.this,c.class);
startActivity(c);
finish();
}
FinishActivity (Код запроса);
этот метод может помочь вам ..
Что нужно сделать, так это начать действие C с некоторым кодом запроса из B... и, соответственно, завершить действие с этим кодом запроса.
Просто вызовите finish();
в действии B onActivityResult
при возврате из C в зависимости от желаемой логики.
Я думаю, что вы можете сделать так, чтобы вы могли зарегистрировать трансляцию в каждом классе и всякий раз, когда вы хотите закончить sendbroadcast и завершить это действие.
// REGISTER IN ONCREATE
BroadcastReceiver form_filled = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String received_action = intent.getAction();
if (received_action.equals("finish_a")) {
finish();
}
}
};
registerReceiver(form_filled, new IntentFilter("finish_a"));
// THIS YOU HAVE TO DO WHEN YOU WANT TO FINISH
Intent temp_intent = new Intent();
temp_intent.setAction("finish_a");
sendBroadcast(temp_intent);
Хорошо, тогда вы можете вызвать startActivityForResult(in,5); чтобы запустить действие C. и реализовать метод переопределения в действии B, например
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if(resultCode==0)
{
finish();
}
else
{
}
}
И установите код результата в Activity, когда вы вызываете Activity D, например
Intent backintent = getIntent();
setResult(0);
Intent in = new Intent(C.this,D.class);
startActivity(in);
Вот и все....