1

我有三个活动,a, b, c。活动b将启动活动c。在活动c中,当我按下返回键时,活动c将完成(),活动b将显示为离开时的样子。

这并不难,我想做的是当我完成()活动c时,我想同时完成()活动b以显示活动a

有谁知道如何从另一项活动中完成一项活动?

4

2 回答 2

1

实现这个最好的方法是结合使用 startActivityForResult 和 onActivityResult 。

从活动 A 开始活动 B,然后从 B 开始活动 C 使用 startActivityForResult() 获取结果

在 Activity C 中,当用户触发返回或 Destroy()

设置一个结果,通知 A 也完成,

在 C 中调用 finish()。

当 B 从 C 接收到该结果时,B 也会对自己调用 finish()。

在父活动中,在触发子活动时,使用以下命令:-

startActivityForResult(intent,variable(int));

并在活动 B 中以下列方式覆盖 onActivityResult 方法:-

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode==2){
        finish();
    }
}

现在,在子活动 C 中,以下列方式覆盖 onStop 和 onDestroy:-

protected void onStop() {
    setResult(2);
    super.onStop();
}

@Override
protected void onDestroy() {
    setResult(2);
    super.onDestroy();
}
于 2012-09-30T05:07:48.543 回答
0

是的,在移动到活动 C 之前完成活动 B。因此,下次当您直接单击 ack 按钮时,它将移动到活动 A,如下面的代码:

      Intent in = new Intent(B.class, C.class);
       startActivity(in)
        finish();
于 2012-09-30T05:01:19.463 回答