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

当由于方向更改而调用on创建时,片段不为空

葛胜泫
2023-03-14

我有一个活动,在它的onCreate中向它的布局添加一个片段。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.new_layout);
    FragmentManager fm = getSupportFragmentManager();

    //R.id.fragment_container refers to a framelayout in R.layout.new_layout 
    MyFragment fragment = (MyFragment) fm
                .findFragmentById(R.id.fragment_container);
    if (fragment == null) {
        FragmentTransaction ft = fm.beginTransaction();
        ft.add(R.id.fragment_container, new MyFragment());
        ft.commit();
    }
}

第一次创建该活动并调用oncreates时,片段为空,因此将向R.id.fragment_container添加一个新的MyFra0020。我希望在方向更改后调用onCread时也会出现同样的情况,但在这种情况下,片段确实不是空的。我真的想知道方向改变时会发生什么。

共有1个答案

龚奇逸
2023-03-14

当方向改变时,整个屏幕会被刷新。Android重启整个运行活动。当发生这种情况时,将调用onDestroy(),然后调用onCreative()。你可以通过做几件事来处理方向的变化。处理此重启的一种方法是使用onSaveInstanceState()。处理此问题的另一种(更简单)方法是一起禁用方向更改。你可以这样做,进入你的Android文件,并添加android:屏幕定向="肖像"android:屏幕定向="景观"下的活动部分。

在Android中处理运行时更改

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

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

  • 我真正想要的是一个功能,当我在Edittext上单击OK时,文本将在文本视图上写入 以下是错误。E/AndroidRuntime:致命异常:主进程:YouTube.Demo.YouTubeDemo,PID:2736 java.lang.NullPoInterException:尝试在YouTube.Demo.YouTubeDemo.Fragments.calculator_List.Calcula

  • 我有一个,有4个选项卡。

  • 这里是链接的代码,我正在做同样的事情链接

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