"不支持的类型' PreferenceActivity'在档案" Android的

时间:2015-04-18 01:27:03

标签: android preferencescreen

我还是Android编程的新手,我无法解决这个问题。 我正在创建一个Preference Screen,但是在我运行应用程序时,我收到以下错误:

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);
    }
}

我在网上搜索过,但我仍然找不到答案。任何帮助将非常感激。提前谢谢。

1 个答案:

答案 0 :(得分:5)

删除<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);
        }
    }