我有四个活动,即A,B,C和D. A启动B,B启动C,C启动D.当C启动D时,我想根据情况销毁活动B(逻辑为将保留在活动C)中,以便当我从D返回时,它将遵循D-> C-> A路径。所以我想从C中销毁活动B.怎么可能?
答案 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);
多数民众赞成......