我有Fragment
,AdapterViewFlipper
显示不同的观点。
AdapterViewFlipper
设置为MyCustomAdapter
,其中包含'查看1','查看2','查看3'和&# 39;查看4',以及它在我自己的Fragment" onCreateView()"中充气的布局资源文件中。
我面临的问题是每当我旋转设备时,AdapterViewFlipper
中的当前视图都会返回到MyCustomAdapter
中添加的第一个视图。
例如:如果AdapterViewFlipper中的当前视图显示' View 2'并且用户旋转设备,它返回到'视图1'。
所以我试图做的是每当我旋转设备时恢复AdapterViewFlipper
中的当前视图及其片段中的状态。
虽然我发现这种方法说我应该在AndroidManifest中的元素声明android:configChanges
属性,它就像一个魅力,但当我读到它时,Android并没有推荐它。
但这在Activity中运行良好。
那么我有办法自己解决这个问题吗?
答案 0 :(得分:1)
所以你需要做的第一件事就是确保你自己保留片段。并且不会在每次重新创建活动时放置新实例。
您可以通过简单检查onCreate()
方法来确定这一点。
您可以检查savedInstance
的{{1}} Bundle
参数是否为onCreate()
,在这种情况下,只需要更换您的片段或检查您的片段是否已添加到您的null
。
FragmentManager
OR
if (savedInstanceState == null) {
// This is a brand new activity, and not a re-creation due to config change
getSupportFragmentManager().beginTransaction().replace(id, yourFragmentInstnace, stringTag);
}
您还需要在片段if (getSupportFragmentManager().findFragmentByTag(fragmentTag) == null) {
// This is a brand new activity, and not a re-creation due to config change
getSupportFragmentManager().beginTransaction().replace(id, yourFragmentInstnace, fragmentTag);
}
或其他内容中致电setRetainInstance(true)
。
在配置更改期间,它将保留相同的片段实例。
这应该会自动允许您的onCreate()
维持其UI状态,这是它显示的当前项目。
你可以找到一个很好的例子here