Android -非法状态异常:内容具有ID属性为“android.R.id.list_container”的视图,该视图不是ViewGroup类

pcww981p  于 2022-12-16  发布在  Android
关注(0)|答案(1)|浏览(125)

我最近将一个旧项目迁移到了AndroidX,我正在努力实现设置片段。基本上,我尝试添加一个设置片段作为一些基本首选项的示例。我甚至使用了工作室设置活动示例代码,但我所有的尝试都返回了相同的异常。
“非法状态例外:内容包含ID属性为“android.R.id.list_container”的视图,该属性不是ViewGroup类”
我试图创建一个新的项目与样本设置活动,它的作品.我正在使用这个prefs版本(虽然我尝试其他)实现“androidx.preference:preference:1.1.1”
我附上它的代码,虽然它是一个样本
活动+碎片

public class SettingsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings_activity);
        if (savedInstanceState == null) {
            getSupportFragmentManager()
                    .beginTransaction()
                    .replace(R.id.settings, new SettingsFragment())
                    .commit();
        }
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
    }

    public static class SettingsFragment extends PreferenceFragmentCompat {
        @Override
        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
            setPreferencesFromResource(R.xml.root_preferences, rootKey);
        }
    }
}

活动布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/settings"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

堆栈跟踪:

java.lang.IllegalStateException: Content has view with id attribute 'android.R.id.list_container' that is not a ViewGroup class
        at androidx.preference.PreferenceFragmentCompat.onCreateView(PreferenceFragmentCompat.java:202)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3138)
        at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3072)
        at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251)
        at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:502)
        at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:246)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1510)
        at android.app.Activity.performStart(Activity.java:8315)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3701)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2308)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7898)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

我错过了什么?我无法消除这个错误

gcuhipw9

gcuhipw91#

我一直在谷歌ANdroid问题跟踪器挖掘,直到我发现this bug,它是匹配我的情况.

解决办法很简单:

1.在代码库中搜索文件preference_list_fragment.xml
1.重命名它,因为它覆盖android.preferences库中的另一个xml文件!

相关问题