簡體   English   中英

如何銷毀“活動”中的先前活動?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM