2013-03-29 81 views
0

我有Activity A,我使用setResultForActivityActivity A拨打Activity B完成孩子活动后,父母活动的异常行为

现在Activity B当我按下按钮Done我射击finish()并返回给 Activity A和下来回onActivityResult。现在的问题是后,当我在Activity B解雇finish()Activity AonCreate不会被调用而这就是为什么

一些自定义的听众在我ListView不工作,他们似乎不绑定。

所以整个活动反应很奇怪,任何人都可以解决这个问题吗?

回答

0

活动A的onCreate不会被调用,因为活动尚未销毁。当一个活动从另一个活动中重新获得焦点时,它会被调用,因此我会将您的绑定侦听器置于其中。当通常调用onCreate时,它们也会被调用。

+0

我试图把它放在一个onResume,我试图设置听众那里,但他们没有工作,当儿童活动完成 – Hunt

0

当你的孩子活动完成后()它返回执行onActivityResult,这是你的情况在活动A. onCreate方法是不应该的,并且当杀死你的子活动,也就是活动B不会被调用。

请发布一些源代码供我们使用,我会改进我的答案! :)

2

为什么第四个答案?因为在我看来,其他人并不完全正确。

事实是,活动A可能在此期间已被销毁,或没有。这取决于Android是否需要内存。所以它可能活动AonCreate()被称为(以及其他生命周期回调),或不。在后一种情况下,在onResume()之前调用onActivityResult()

虽然配置更改,以保持活动的状态下,最有效的方法是通过nonConfigurationState,如果你想让它已经被摧毁后您的活动的重新启动做准备,你可以使用InstanceState机制,因为在Android的破阵你的活动A,它会保持它的意图和保存的实例状态来重新创建它。

这强调绝对必要将初始化正好放在它所属的回调中。

要测试活动逻辑是否正常工作,无论是否安卓摧毁它或没有,你可以使用DevTools设置“开发设置” - >“立即销毁活动”。 DevTools应用程序在AVD上可用,也可以从Google Play下载。

1

只需将您的onCreate()的东西放在ActivityA的onResume()中,但setContentView()除外。

+0

一些例子与解释会很好。 – Nilambar

相关问题