好吧,所以我遇到了一些问题,很显然,标题我不确定如何用它来表达(“让事情无效”?真的吗?)
无论如何,我在Fragment
内有一个FragmentActivity
,当创建Fragment
时,会立即在屏幕上抛出一个对话框并开始AsyncTask
(从服务器上获取信息)。我遇到的问题是我在AsyncTask发生时改变方向。
起初,由于显示的对话框(我很容易取消onPause
中的对话框),我一直得到“你的活动已经泄漏了一个窗口”或类似的东西,但是,现在我看到了方向更改从getActivity()
内部调用Fragment
返回null以及保存IP地址的SharedPreference
变为空(并且,因为它找不到{的值{1}},它转到默认值,即空字符串。
那么,我该如何处理这种方向变化?
答案 0 :(得分:7)
如果您不希望重新创建片段并完全受操作系统的配置更改机制的影响,为什么不将片段设置为:
fragment.setRetainInstance(true);
这将阻止在根据Google的文档对父活动进行配置更改时重新创建片段:
控制是否在Activity中保留片段实例 重新创建(例如从配置更改)。这只能是 与不在后栈中的片段一起使用。如果设置,则片段 重新创建活动时,生命周期会略有不同
希望这有帮助!
问候!