处理运行时方向更改android
在我的应用程序中,我有活动A.单击此活动上的按钮后,应用程序启动活动B.Inside活动B的onCreate()我添加一个片段。每次创建一个片段时,它会加载一个列表从外部服务器使用AsyncTask。处理运行时方向更改android
我该如何坚持这个列表的配置更改?我已经寻找了很多解决方案,但许多人建议在清单中使用'android:configchanges',我完全反对使用。许多建议和我已阅读关于它 - 也可以使用在片段中保留片段的setRetainInstance(true)。
我试图实现它,但我失败了。方向更改后的很多教程使用findFragmentByTag检查片段,但在我的情况下,它总是返回null.Can任何人请发布适当的教程或如何使用RetainFragments的正确答案?
另外我调用AsyncTask加载Fragment中的onActivityCreated方法列表。根据android文档使用setRetainInstance(true)时,onCreate(Bundle)将不会被调用,因为片段不会被重新创建。 onAttach(Activity)和onActivityCreated(Bundle)仍然会被调用。
所以我应该在onCreate方法中调用AsyncTask?
注意:您的活动将被销毁,每个用户旋转屏幕时重新
我,如果你还记得这个我不知道。当屏幕改变方向时,系统会破坏并重新创建前景活动,因为屏幕配置已更改,您的活动可能需要加载替代资源(例如布局)。
我higly建议你这个帖子:
处理配置更改片段
http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html
注:为了让Android系统以恢复您的活动的意见的状态,每个视图必须有一个由android:id属性提供的唯一ID。
来源:http://developer.android.com/training/basics/activity-lifecycle/recreating.html
我在这里提到我完全反对使用android:configchanges – akg 2014-11-04 23:08:38
检查this。 本教程用于跨定位更改保留MediaPlayer实例。它非常直接。它使用片段的setRetainInstance(true)来保留MediaPlayer的方向更改。
这部分解释了片段的方向恰克
onAttach期间解雇回调 - 总是
的onCreate - 而不是在配置变化
在onStart - 总是
的onResume - 总是
的onPause - 总是
的onStop - 总是
的onDestroy - 而不是在配置变化
onDetach - 总是
所以才创建这个片段到你的服务器响应参考,并拨打电话到onCreate中的服务器。
您可以使用activity的isChangingConfigurations()方法来了解是否因方向更改而调用片段的生命周期,或者如果要释放某些资源,则会破坏片段。
在活动中使用FragmentManager检查是否存在片段的实例已经存在,如果没有创建新的并添加它。
查看AsyncTaskLoader。这些都是你提到的这种情况。 – 2014-11-04 22:50:42
你有保存和恢复实例状态吗?我认为这个问题类似于[http://stackoverflow.com/questions/6787071/android-fragment-how-to-save-states-of-views-in-a-fragment-when-another-fragmen ?answertab=活动#tab-top] – VizGhar 2014-11-04 22:56:19
现在你的应用行为是什么? – vovahost 2014-11-04 23:08:47