"Unsupported type 'PreferenceActivity' in file" Android

"Unsupported type 'PreferenceActivity' in file" Android

我还是Android编程的新手,我就是解决不了这个问题。 我正在创建一个首选项屏幕,但在我 运行 应用程序的那一刻,我收到以下错误:

Error:Execution failed for task ':app:mergeDebugResources'.
> Unsupported type 'PreferenceScreen' in file C:\Users\Fidel Sebastián\AndroidStudioProjects\Asteroides\app\src\main\res\values\preferencias.xml

这是 XML 文件:

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:key="preferencias_principal" >
        <CheckBoxPreference
            android:key="music"
            android:title="Start music"
            android:summary="Select for background music"/>
        <ListPreference
            android:key="graphics"
            android:title="Graphics type"
            android:summary="Choose your graphics type"
            android:entries="@array/graphicstype"
            android:entryValues="@array/graphicsTypeValues"
            android:defaultValue="1"/>
        <EditTextPreference
            android:key="fragments"
            android:title="Number of fragments"
            android:summary="Select for meteor fragments"
            android:defaultValue="3"/>
    </PreferenceScreen>
</resources>

这是 Java 文件:

package com.example.fidelsebastin.asteroides;


import android.os.Bundle;
import android.preference.PreferenceFragment;

public class Preferences extends PreferenceFragment {
    @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.arrays);
    }
}

我在网上找遍了,还是找不到答案。任何帮助将非常感激。提前致谢。

删除 <resource> 标签。 PreferenceScreen 不是资源。应该定义为XML中的顶级对象,如the documentation example:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="preferencias_principal" >
    <CheckBoxPreference
        android:key="music"
        android:title="Start music"
        android:summary="Select for background music"/>
    <ListPreference
        android:key="graphics"
        android:title="Graphics type"
        android:summary="Choose your graphics type"
        android:entries="@array/graphicstype"
        android:entryValues="@array/graphicsTypeValues"
        android:defaultValue="1"/>
    <EditTextPreference
        android:key="fragments"
        android:title="Number of fragments"
        android:summary="Select for meteor fragments"
        android:defaultValue="3"/>
</PreferenceScreen>

另外:

  1. 您需要将首选项文件移动到 res/xml 而不是 res/values
  2. 您应该将首选项文件的标识符传递到 addPreferencesFromResource(),而不是 R.xml.arrays:

    public class Preferences extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferencias);
        }
    }