2012-05-07 91 views
0

我有四项活动,即A,B,C和D.启动B,B启动C,C启动D.当C启动D时,我想根据情况销毁活动B保持活动C),以便当我从D返回时,它将遵循D-> C-> A路径。所以我想从C中摧毁B的活动。怎么可能?如何在活动中销毁以前的活动?

+0

你可以得到你的答案[这里](http://stackoverflow.com/questions/9972097/activity-lifecycle-issues)! –

+0

参考活动B到C并调用ref.finish();其中ref是对B活动的引用。 – Akram

回答

2

完成活动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(); 
} 
+0

当我从C打电话给D时,我想完成B,而不是从B本身完成B.从B本身完成B本身并不是一个初学者的问题。 –

+1

好的,你可以调用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时像Intent那样在Activity中设置结果码backintent = getIntent(); setResult(0); Intent in = new Intent(C.this,D.class); startActivity(in); 就是这样 –

1

finishActivity(requestCode);

这种方法可以帮助你..

做的是与一些请求代码从b启动活动ç...因此能与该请求码

1

直接让完成活动finish();在活动B的onActivityResultç取决于逻辑你想

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); 
0

好然后可以调用startActivityForResult(在,5);启动活动C.贯彻像

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent intent)  {     
super.onActivityResult(requestCode, resultCode, intent); 
    if(resultCode==0) 
    { 
     finish(); 
    } 
    else 
    { 

    } 
    } 

在活动B中的覆盖方法,并设置resultCode为在活动当你调用活动d像

Intent backintent = getIntent(); 
    setResult(0); 
    Intent in = new Intent(C.this,D.class); 
    startActivity(in); 

完蛋了....

相关问题