[英]How to destroy previous activity in Activity?
我有四個活動,即A,B,C和D。A啟動B,B啟動C,C啟動D。當C啟動D時,我想根據情況銷毀活動B(邏輯將保留在其中活動C),這樣當我從D返回時,它將遵循D-> C-> A路徑。 所以我想從C銷毀活動B。這怎么可能?
調用活動C時完成活動B取決於您的邏輯。 例如
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(requestCode);
此方法可能會幫助您。
要做的是用來自B的一些請求代碼啟動活動C,然后用此請求代碼完成活動。
只需調用finish();
從活動C返回活動B的 onActivityResult
時,具體取決於您想要的邏輯
我認為您可以做的是,您可以在每堂課中注冊一個廣播,並且只要您想結束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 D時在Activity中設置結果代碼,例如
Intent backintent = getIntent();
setResult(0);
Intent in = new Intent(C.this,D.class);
startActivity(in);
而已....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.