我刚刚通过的文件去attach()和detach()方法FragmentTransaction:
attach():在先前已从UI分离后重新附加片段detach(Fragment).这会导致其视图层次结构被重新创建,附加到UI并显示.
嗯,这是什么意思?
更具体地说,我看到了一个例子:
mMapFragment = new MapFragment();
ft.beginTransaction(mMapFragment)
.attach()
.add(R.id.container, mMapFragment)
.commit();
Run Code Online (Sandbox Code Playgroud)
我删除了attach()并再次尝试:我没有发现任何差异.什么是attach在这个例子吗?与此相比有何不同:
ft.beginTransaction()
.add(R.id.container, mMapFragment)
.commit();
Run Code Online (Sandbox Code Playgroud)如果上面的例子是不够好,以示区别.我只是想知道做的时候,我们需要调用attach()和detach()明确?如果你可以解释添加/删除/替换方面的差异会更好.
我在PreferenceFragment中获取一些自定义DialogPreference子类时遇到了一些麻烦,以便在旋转屏幕时保持可见.我在使用PreferenceActivity时没有遇到这个问题,因此我不知道它是Android错误还是代码问题,但我希望有人确认他们是否有相同的体验.
要对此进行测试,首先要创建一个包含至少一个DialogPreference的首选项屏幕(哪个子类无关紧要).然后在PreferenceActivity中显示它.运行应用程序时,请按DialogPreference以显示其对话框.然后旋转屏幕以使方向发生变化.对话框是否仍然可见?
然后尝试相同,但使用PreferenceFragment显示您的首选项而不是PreferenceActivity.再次,旋转屏幕时对话框是否仍然可见?
到目前为止,我发现如果使用PreferenceActivity,对话框将保持可见,但如果使用PreferenceFragment则不会.查看DialogPreference的源代码,似乎正确的行为是对话框保持可见,因为在屏幕isDialogShowing重定向时onSaveInstanceState()调用时会保存状态信息.因此,我认为一个错误可能会阻止PreferenceFragment(及其中的所有内容)恢复该状态信息.
如果它是Android错误,那么它具有深远的影响,因为任何使用PreferenceFragment的人都无法保存和恢复状态信息.
有人可以确认吗?如果它不是一个错误,那么发生了什么?
android preferenceactivity android-preferences android-fragments dialog-preference