gpt4 book ai didi

android - 屏幕旋转时的选项卡更改 [Android]

转载 作者:太空狗 更新时间:2023-10-29 15:39:43 25 4
gpt4 key购买 nike

您好,我有一个带有 4 个选项卡的 Android 应用程序(比如说 tab1、tab2、tab3、tab4)。当 Activity 启动时,默认选项卡是 tab1。比起我切换到任何其他选项卡(tab2、3 或 4)并更改屏幕方向,它总是重置为默认选项卡(tab1)。

我尝试了以下代码:

@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
setContentView(R.layout.main);
createView();
}

在 createView() 里面我有:

private void createView()
{
... // Tabs are created before
tabHost.getTabWidget().setCurrentTab(CurrentTab);
}

CurentTab 是私有(private) int,默认设置为 0,但在 TabChange 上设置:

public void onTabChanged(String tabId) {
... some code
CurrentTab = tabHost.getCurrentTab();
}

我就卡在这里了。。。还有什么办法可以解决这个问题吗?

很快:我希望 Tab 在屏幕旋转时不会更改为默认...

最佳答案

问题是,在配置更改(如屏幕旋转)时,当前 Activity 会被销毁并重新创建。在选项卡 Activity 的情况下,这包括选项卡 Activity 本身以及每个选项卡的 Activity 。

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

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

关于android - 屏幕旋转时的选项卡更改 [Android],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5675982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com