我有四个活动,即A,B,C和D。A启动B,B启动C,C启动D。当C启动D时,我想根据情况销毁活动B(逻辑将保留在活动C),这样当我从D返回时,它将遵循D->C->A路径。所以我想从 C 中破坏活动 B。这怎么可能?
问问题
13429 次
5 回答
3
当您调用 Activity C 时完成 Activity 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();
}
于 2012-05-07T11:11:45.703 回答
1
根据您想要的逻辑,从C返回时只需调用finish();
活动B onActivityResult
于 2012-05-07T09:58:29.030 回答
1
完成活动(请求代码);
这个方法可以帮助你..
要做的是使用来自 B 的一些请求代码启动活动 C ... 并相应地使用此请求代码完成活动
于 2012-05-07T09:56:43.520 回答
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);
而已....
于 2012-05-10T10:03:47.233 回答
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);
于 2012-05-07T10:02:15.437 回答