我还是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);
}
}
我在网上搜索过,但我仍然找不到答案。任何帮助将非常感激。提前谢谢。
答案 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>
此外:
res/xml
而非res/values
您应该将首选项文件的标识符传递到addPreferencesFromResource()
,而不是R.xml.arrays
:
public class Preferences extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferencias);
}
}