设备旋转会导致重置当前选项卡

时间:2016-02-22 10:50:43

标签: android android-fragments xamarin

我有一个 Xamarin 应用,其中有一个包含多个标签的Activity(每个标签都有一个片段)。

旋转设备时,所选标签始终会恢复为第一个标签。

这是正常的吗?

我应该存储在onSaveInstanceState()期间选择哪个标签并在onCreate()期间选择它?

1 个答案:

答案 0 :(得分:2)

问题是,在配置更改(如屏幕旋转)上,当前活动会被破坏并重新创建。如果是选项卡活动,则包括选项卡活动本身以及每个选项卡的活动。

因此,当它重新创建时,它只显示第一个标签,因为它没有其他信息。

要解决此问题,您可以覆盖选项卡活动的onRetainNonConfigurationInstance()并返回当前选定的标签。在选项卡活动的on onCreate中,然后调用getLastNonConfigurationInstance(),它返回您在onRetainNonConfigurationInstance()中返回的对象。如果对象为null,则表示没有方向更改,因此您只需选择第一个选项卡,如果它不为null,则表示屏幕旋转,您可以使用返回的值来确定之前选择的选项卡并设置它再次。