我有三个活动,a, b, c。活动b将启动活动c。在活动c中,当我按下返回键时,活动c将完成(),活动b将显示为离开时的样子。
这并不难,我想做的是当我完成()活动c时,我想同时完成()活动b以显示活动a。
有谁知道如何从另一项活动中完成一项活动?
我有三个活动,a, b, c。活动b将启动活动c。在活动c中,当我按下返回键时,活动c将完成(),活动b将显示为离开时的样子。
这并不难,我想做的是当我完成()活动c时,我想同时完成()活动b以显示活动a。
有谁知道如何从另一项活动中完成一项活动?
实现这个最好的方法是结合使用 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();
}
是的,在移动到活动 C 之前完成活动 B。因此,下次当您直接单击 ack 按钮时,它将移动到活动 A,如下面的代码:
Intent in = new Intent(B.class, C.class);
startActivity(in)
finish();