所以我有一个Activity
显示Fragment
(允许调用A),它还会显示DialogFragment
(让我们调用B)。而" B"打开用户旋转然后解雇" B"。结果是" A"不再知道它的任何变量......主要片段" A"似乎在旋转发生时运行OnCreateView但不是在" B"被展示。
我在片段" A"的构造函数OnCreateView
,OnResume
和OnStart
上添加了断点。当显示一个对话框时,在活动的Fragment
旋转期间发生的唯一事情就是构造函数。但是当旋转期间内存中没有DialogFragment
时,生命周期事件,最重要的是OnCreateView,就像你期望的那样发生。
以下是从OnCreate(Bundle bundle)更改方向期间在Activity中发生的代码:
string fTag = "ftag";
//will work, but shows null if dialog was open during rotate
_fragment = (CustomFragment) FragmentManager.FindFragmentByTag(fTag);
if(_fragment == null) {
_fragment = new CustomFragment(fTag, "Title Here");
}
在上面的代码块中,如果没有对话框,FragmentManager会找到片段,但在方向更改后显示对话框时却找不到片段...
有没有人遇到过这个?我错过了一个可行的生命周期事件吗?我根本不了解Android SDK开发人员的想法。