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

方向更改后的片段文本视图状态(具有不同的布局)

彭风华
2023-03-14

我正在尝试创建一个计算器,在肖像模式下有一个简单的版本,在景观中有一个科学版本旁边有一个过去计算的列表。我遇到了将肖像模式的textview中的当前值传递给横向模式的问题。

我的主要activity:

private FragmentManager fm;
Fragment fragmentScientific, fragmentList

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    fm = getSupportFragmentManager();
    setUpFragments();
}
private void setUpFragments() {
    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        fragmentScientific= fm.findFragmentById(R.id.container_ui_landscape);
        fragmentList= fm.findFragmentById(R.id.container_list);
        if ((fragmentScientific == null) && (fragmentList == null)) {
            fragmentScientific= new ScientificFragment();
            fragmentList= new RecordListFragment();
            fm.beginTransaction()
                    .add(R.id.container_ui_landscape, fragmentScientific)
                    .add(R.id.container_list, fragmentList)
                    .commit();
        }
    } else {
        fragmentScientific= fm.findFragmentById(R.id.container_ui_portrait);
        if (fragmentScientific== null) {
            fragmentScientific = new ScientificFragment();
            fm.beginTransaction()
                    .add(R.id.container_ui_portrait, fragmentScientific)
                    .commit();
        }
    }
}

我尝试在我的ScientificFragment类中使用onSaveInstanceState包来承载它

    private TextView newRes;
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putString("currentCal", newRes.getText().toString());
    }

但我最后有两个单独的保存包,一个用于肖像,一个用于风景。

共有1个答案

阙项禹
2023-03-14

Android系统实际上会在方向更改时为您处理视图恢复,而不管您是否有不同的布局。关键是在两种布局中都要有相同的ID。使用不同的或根本不指定任何内容都将阻止它们的状态恢复。

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

  • 我试过configChanges,但显然它没有改变我的布局。我试着在onConfigurationChanged的FrameLayout容器中填充肖像和景观布局并替换它们,但似乎也不起作用。 如何处理需要加载不同布局同时保持片段状态不变的情况?这有可能吗?对于这种事情,正确的做法是什么?

  • 当我启动一个实现viewpager的活动时,viewpager创建了各种片段。我想为每个片段使用不同的布局,但问题是viewpager最大只显示两个布局(在1之后的所有剩余片段上显示第二个布局)。 下面是实现viewpager的SwipeActivity的代码: 这是片段的代码

  • 我正在基于模板进行查看,但在某些区域我想输入片段。 模板:base。html 查看:列表。html 片段:片段/init.html 对于头部碎片,它可以正常工作。但在页脚中,但在页脚中,将显示模板的代码。 输出: 我希望你能帮助我。提前感谢。 使现代化 基础html 列表html init.html 输出: 我设法在页脚中包含代码片段,但我的目标是替换它。 解决方案:

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

  • 我找不到如何从< code>Activity更改fragment的< code>textview。我有4个文件: frag_class.xml有textView,我想更改MainActivity.java的文本。FragmentClass扩展了片段,此片段显示在MainActivity中,FragmentClass具有: 在MainActivity中,我尝试了这个: 但可悲的是,这段代码给了我Nu