如何从子活动完成父活动
Posted
技术标签:
【中文标题】如何从子活动完成父活动【英文标题】:How to finish parent activity from child activity 【发布时间】:2012-03-28 16:15:59 【问题描述】:我是 android 开发新手。
我创建了一个主 Activity (->A),它有 4 个按钮。 4 个按钮之一是 EXIT 按钮。
我开始另一个活动 (->B),点击 EXIT 按钮。这将通过来自“A”Activity 的意图打开“B”Activity。
活动“B”包含 - 您要退出吗?是按钮和否按钮。
如果我给出finish(),点击按钮- 它退出'B'Activity。我想完成“B”和“A”。
我什至尝试过 A.finish() -> 这无法被识别并导致语法/语义错误。
我会很感激这里的帮助。
P.S : 我使用的是Android-2.2 版本的手机,我不喜欢使用ActivityManager 来解决这个问题。
【问题讨论】:
【参考方案1】:尝试使用
启动子活动 startActivityForResult(intent, REQUEST_EXIT);
在子活动中
case R.id.quit:
setResult(RESULT_OK, null);
finish();
在父活动中
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
if (requestCode == REQUEST_EXIT)
if (resultCode == RESULT_OK)
this.finish();
【讨论】:
如果父活动没有出现,这是否有效。我的意思是我有一个按钮可以开始另一个活动。在此按钮上单击我也不会完成当前活动及其父项 只要子Activity是在父Activity中使用startActivityForResult启动的,并且onActivityResult是在父Activity中定义的,这个方法就会起作用。【参考方案2】:在 Activity A 中使用 startActivityForResult()
来启动 Activity B,在 A 中使用 onActivityResult()
只是在 finish()
Activity A 中。在 Activity B 中按下按钮只是 finish()
Activity B。
【讨论】:
感谢 Georgy 的解释 - 我已将他的代码部分用于我的代码部分。【参考方案3】:您可以从子活动中完成父活动,例如...
在父母中....
startActivityForResult(new Intent(Parent.this, Child.class), ACTIVITY_CONSTANT);
并覆盖 Parent 中的 OnActivityForResult(...) 方法。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == ACTIVITY_CONSTANT)
finish();
当您在子活动上调用 finish() 时,它也会结束父活动。
【讨论】:
以上是关于如何从子活动完成父活动的主要内容,如果未能解决你的问题,请参考以下文章
Android:setResult 未将结果返回给父 Activity
如何在父进程被杀死/完成时保持子进程处于活动状态(在 Windows 中)