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

Android碎片在方向改变上重新创建

段干弘扬
2023-03-14

我正在开发一个应用程序,基本上有一个行动栏。当我的应用程序启动时,活动创建片段并将它们附加到每个标签上,所以当我切换时,我会得到不同的视图。

当我试图旋转设备时,问题就出现了。经过一番挣扎,我注意到Android会像这样自动重新创建之前添加的片段:

SummaryFragment.onCreate(Bundle) line: 79   
FragmentManagerImpl.moveToState(Fragment, int, int, int) line: 795  
FragmentManagerImpl.moveToState(int, int, int, boolean) line: 1032  
FragmentManagerImpl.moveToState(int, boolean) line: 1014    
FragmentManagerImpl.dispatchCreate() line: 1761 
DashboardActivity(Activity).onCreate(Bundle) line: 864  
...

共有1个答案

季炯
2023-03-14

您需要检查savedInstanceState[edit:in your parent activity],如果它存在,则不要创建片段。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    if (savedInstanceState == null) {
         // Do your oncreate stuff because there is no bundle   
    }
// Do stuff that needs to be done even if there is a saved instance, or do nothing
}
 类似资料:
  • 我在片段中重写onCreateOptionsMenu()方法,为任何片段创建单独的操作条:

  • 我有一个,当用户浏览应用程序时,我将当前片段替换为用户选择的片段,并添加将交易添加到背包。一切正常,用户可以通过按下返回按钮返回到以前的片段。 当设备方向改变时会出现问题:假设用户看到的第一个片段是A,然后他导航到B,并从B导航到C。在横向模式下,可以更好地欣赏C中的内容,并且C有一个特殊的横向布局,因此用户旋转设备。我希望用户使用C语言进行新的定位。相反,用户看到的是景观。现在他需要再次从A导航

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

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

  • 当我在选项卡之间切换并将片段附加到选项卡视图时,我面临着重叠片段的问题,下面是我的代码,请帮助