我有一个 Xamarin 应用,其中有一个包含多个标签的Activity(每个标签都有一个片段)。
旋转设备时,所选标签始终会恢复为第一个标签。
这是正常的吗?
我应该存储在onSaveInstanceState()
期间选择哪个标签并在onCreate()
期间选择它?
答案 0 :(得分:2)
问题是,在配置更改(如屏幕旋转)上,当前活动会被破坏并重新创建。如果是选项卡活动,则包括选项卡活动本身以及每个选项卡的活动。
因此,当它重新创建时,它只显示第一个标签,因为它没有其他信息。
要解决此问题,您可以覆盖选项卡活动的onRetainNonConfigurationInstance()
并返回当前选定的标签。在选项卡活动的on onCreate中,然后调用getLastNonConfigurationInstance()
,它返回您在onRetainNonConfigurationInstance()中返回的对象。如果对象为null,则表示没有方向更改,因此您只需选择第一个选项卡,如果它不为null,则表示屏幕旋转,您可以使用返回的值来确定之前选择的选项卡并设置它再次。