我有Activity A
,我使用Activity B
从Activity A
拨打setResultForActivity
。
现在在Activity B
当我按下Done
按钮时,我正在解雇finish()
并返回
Activity A
并返回onActivityResult
。现在问题发生在我finish()
Activity B
Activity A
onCreate
ListView
{{1}}之后{{1}}未被调用,这就是为什么
我的{{1}}中的一些自定义侦听器无法正常工作,似乎它们没有绑定。
所以整个活动反应非常奇怪,任何人都可以解决这个问题吗?
答案 0 :(得分:2)
为什么第四个答案?因为在我看来,其他人并不完全正确。
事实是,在此期间,活动A
可能已被销毁。这取决于Android是否需要内存。因此 可能会调用Activity A
的{{1}}(以及其他生命周期回调)。在后一种情况下,onCreate()
之前会调用onActivityResult()
。
对于配置更改,保留活动状态的最有效方法是通过onResume()
,如果您想要在销毁活动后重新启动活动,可以使用{{1}机制,因为当Android破坏你的活动nonConfigurationState
时,它将保持其意图并保存实例状态以重新创建它。
这强调了将初始化完全放在它所属的回调中的绝对必要性。
要测试您的Activity逻辑是否有效,无论Android是否销毁它,您都可以使用DevTools设置“开发设置” - > “立即摧毁活动”。 DevTools应用程序可在AVD上使用,也可以从Google Play下载。
答案 1 :(得分:1)
只需将onCreate()内容放在Activity A的onResume()中,setContentView()除外。
答案 2 :(得分:0)
请阅读Android活动生命周期:http://developer.android.com/training/basics/activity-lifecycle/stopping.html。 onCreate()仅在首次创建活动时调用。您可以在onResume()方法中执行列表操作。
答案 3 :(得分:0)
活动A的onCreate
将不会被调用,因为活动尚未被销毁。当一个Activity重新获得另一个活动的焦点时,它会被onStart
和onResume
调用,所以我会将你的绑定侦听器放入其中。通常在调用onCreate
时也会调用它们。
答案 4 :(得分:0)
在你的子活动完成之后(),它返回执行onActivityResult,这是你在活动A中的情况。在杀死你的子活动,即活动B时,不应该使用onCreate方法,也不会被调用。
请发布一些源代码供我们使用,我会改进我的答案! :)