gpt4 book ai didi

android - 方向更改后 fragment saveInstanceState 变为空

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:29 27 4
gpt4 key购买 nike

我有一个带有操作栏选项卡的 Activity 。每个选项卡都包含一个 fragment 。现在,当我旋转我的设备时,相应 fragment 中的 bundle 变为空。当我使用 android 3.2 后的设备时会注意这一点,但当设备是 Andoird3.0 时会发生这种情况。解决这个问题后我很头疼。我在 SO 上检查了各种链接,但没有帮助。虽然我已经提供了足够的细节,但仍然会提供一些代码 fragment ,因为在各种情况下用户会要求提供代码 fragment 。

在我的 fragment 类中我存储了这个值

 @Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putBoolean("textboxVisible", true);
}

这是存储一个 bool 变量,如下所示。

/**
* Function called after activity is created. Use this
* method to restore the previous state of the fragment
*/
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null)
{
//restore the state of the text box
boolean textboxVisible = savedInstanceState.getBoolean("textboxVisible");
if (textboxVisible)
{
//do some stuff
}
}
}

但在轮换后 savedInstanceState 变为空。我不知道出了什么问题。我在一些文档中读到低于 3.2 的 onCreateView()不使用包值调用 fragment 。但是要处理这个。任何帮助将不胜感激。

最佳答案

如果您使用 setRetainInstance(true),则 savedInstance 包在方向更改后始终为 null。所以你不能真正用它保存一些东西,但是如果你需要保存一些东西,你可以做的就是把它放在 fragment 的数据成员中,因为 setRetainInstance(true) 保留 fragment 并且不会破坏它,所以之后设备旋转了,您将拥有相同的值。

关于android - 方向更改后 fragment saveInstanceState 变为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13815207/

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