gpt4 book ai didi

android - fragment 和处理方向变化

转载 作者:太空狗 更新时间:2023-10-29 14:29:10 25 4
gpt4 key购买 nike

我有一个 Activity ,里面有一个 fragment 。

我想自己处理方向变化,所以我将 list 更新为如下所示:

    <activity android:name="com.test.app" android:configChanges="orientation|keyboardHidden"/>

然后我将 Activity 更新为如下所示:

    @Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
updateLayout();
}

    @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
updateLayout();
}

private void updateLayout() {
setContentView(R.layout.my_layout);
}

我也对 fragment 执行此操作:

    fragment.setRetainInstance(true);

我遇到的问题是,当我执行屏幕方向时,它在 setContentView() 上失败,说我的 fragment 有一个重复的 ID。不确定如何做到这一点,以免发生这种情况 - 想法?

蒂亚。

最佳答案

我相信这是因为你告诉它不要丢弃你以前的布局,所以当你旋转它时,你仍然有你的旧 View (在这种情况下,它与新 View 相同,因此 ID 冲突)。

另外,我不确定,但我认为:

fragment.setRetainInstance(true);

不需要吗?因为在这里你告诉它不要在配置更改时重新创建你的 Activity :

android:configChanges="orientation|keyboardHidden"

根据我的经验,XML 中的 configChanges 设置足以防止重新创建。

编辑:

嗯,再看一遍,你到底是如何使用 Fragments 的?如果此处发布的代码来自您的 FragmentActivity,那么我会期待这样的事情来膨胀您的 Fragment 并将其添加到 Activity:

class SomeActivity extends FragmentActivity
{
...
@Override
public void onCreate( Bundle savedInstance )
{
...
LayoutInflater inflater = getLayoutInflater();
inflater.inflate( R.layout.some_fragment, root );
...
}
}

XML 看起来像这样:一些_ fragment .xml

<?xml version="1.0" encoding="utf-8"?>
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.someapp.fragments.SomeFragment">
</fragment>

所以我想我不清楚您是如何使用 Fragments 的。但是像这样使用它们,通过 XML 配置设置,成功地为我禁用了旋转娱乐。

关于android - fragment 和处理方向变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8495095/

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