如何销毁活动中的先前活动?

时间:2012-05-07 09:49:52

标签: android android-activity destroy activity-finish

我有四个活动,即A,B,C和D. A启动B,B启动C,C启动D.当C启动D时,我想根据情况销毁活动B(逻辑为将保留在活动C)中,以便当我从D返回时,它将遵循D-> C-> A路径。所以我想从C中销毁活动B.怎么可能?

5 个答案:

答案 0 :(得分:2)

在调用活动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();
}

答案 1 :(得分:1)

finishActivity(requestCode);

这种方法可以帮助你......

该怎么做是使用B中的一些请求代码启动活动C ...并相应地使用此请求代码完成活动

答案 2 :(得分:1)

根据您想要的逻辑,从 C 返回时,只需在活动 B finish();中致电onActivityResult

答案 3 :(得分:0)

我认为你能做的就是你可以在每个班级注册一个广播,每当你想完成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);

答案 4 :(得分:0)

好的,你可以调用startActivityForResult(in,5);启动Activity C.并在Activity 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);

多数民众赞成......