当前位置: 首页 > 知识库问答 >
问题:

方向更改后,片段saveInstanceState将变为null

寇靖
2023-03-14

我有一个活动与行动栏标签。每个选项卡都包含一个片段。现在,当我旋转我的设备时,我的相应片段中的bundle是空的。当我使用Android3.2后的设备时,这是小心的,但当设备是Android3.0时,这是发生的。我在这个问题上工作后感到头痛。我就这样勾选了各种链接,但无济于事。虽然我已经给出了足够的细节,但仍然会提供一些代码段作为在各种情况下用户要求的代码段。

在我的片段类中,我存储了这个值

 @Override
    public void onSaveInstanceState(Bundle outState)
    {
        super.onSaveInstanceState(outState);
        outState.putBoolean("textboxVisible", true);
    }
/**
 * 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
        }                   
    }
}

共有1个答案

谢飞舟
2023-03-14

如果您使用SetRetaInstance(true),在方向改变后,savedInstance包将始终为空。所以你不能真正用它保存一些东西,但是如果你需要保存一些东西,你可以做的是把它放在片段的一个数据成员中,因为setRetaInstance(true)保留了片段,不会破坏它,所以在设备旋转之后,你会有同样的值。

 类似资料:
  • 我有一个以编程方式创建片段的活动。该片段内部有另一个片段。 活动包含片段A。片段A包含片段B。 如果(savedInstanceState==null){ } 但对我不起作用! null null 活动: 片段:

  • 请注意,此问题不是以下问题的重复: https://stackoverflow.com/questions/19006776/onactivityresult-not-working-with-fragments onActivityResult不处理片段 此外,之前也有人问过类似的问题,但这并没有提到方向的变化(目前尚未解决)。 如果不切换方向,则会调用片段中的onActivityResult方

  • 问题内容: 我想将自己更改为我尝试过的内容,但无法将我的活动更改为片段。有人可以告诉我该怎么做吗?在哪里编辑我是Android上的新手。请告诉我和在此先感谢 这是我的活动: 问题答案: 只要了解一些步骤,您就可以现在和将来轻松地将Activity转换为Fragment ..: 首先,不要扩展,只要扩展.. 例如: 然后覆盖.. 然后通过LayoutInflater扩展布局,并分配给进一步用于子视图

  • 在我的活动中,我有一个包含5个项目的底部导航视图。在底部导航视图中单击每个项目时,我正在加载一个片段。假设我在第3个项目上并且我正在更改方向,然后活动被重新创建并显示为选定的第一个项目。我通过在我的活动中给出以下代码来避免这种情况。 通过给出上述代码,我成功地将第三项显示为选中项。但这里的问题是片段正在被重新创建,而我的savedInstanceState在该片段中始终为null。我已经给了 在我

  • 我有一个活动,它在onCreate中加载一个片段(比如Fragment1)。当用户按下Fragment1中的按钮时,我用一个新片段替换Fragment1,比如Fragment2。问题是,在Fragment2中更改方向时,会重新创建活动,并显示Fragment1而不是Fragment2。(因为我在onCreate中创建了Fragment1)我如何坚持Fragment2并在方向更改时保持其状态? 谢谢

  • null 我想保留的最后一个查看页面索引,当活动因任何原因重新创建时,例如方向改变。 位于附加到活动的(名为)中。我使用的是compat库,因此该片段是的子类。 我认为可以通过重写方法并在中添加适当的逻辑来完成,如文档中所述: 为了正确地处理重启,重要的是您的活动通过正常的活动生命周期恢复其以前的状态,在正常的活动生命周期中,Android在破坏您的活动之前调用onSaveInstanceStat