好吧,所以我有一点问题,显然我的标题我不确定如何表达它("使事情无效"?真的吗?)
无论如何,我有一个Fragment
内部FragmentActivity
,当Fragment
创建时,立即在屏幕上抛出一个对话框并开始AsyncTask
(从服务器抓取信息).我遇到的问题是我在AsyncTask发生时改变方向.
起初我一直得到一个"你的活动已经泄露了一个窗口"或类似的东西,因为显示的对话框(我很容易就取消了对话框onPause
),然而,现在我看到方向改变是getActivity()
从内部调用在Fragment
返回null以及一个SharedPreference
保存的IP地址变为无效(和,因为它无法找到的值SharedPreference
,它进入这是一个空字符串的默认值.
那么,我该如何处理这种方向变化呢?
如果您不希望重新创建片段并完全受操作系统的配置更改机制的影响,为什么不将片段设置为:
fragment.setRetainInstance(true);
Run Code Online (Sandbox Code Playgroud)
这将阻止在根据Google的文档对父活动进行配置更改时重新创建片段:
控制是否在活动重新创建(例如从配置更改)中保留片段实例.这只能用于不在后栈中的片段.如果设置,则在重新创建活动时,片段生命周期将略有不同
希望这可以帮助!
问候!
归档时间: |
|
查看次数: |
1236 次 |
最近记录: |