我在preferences.xml文件夹中创建了几个首选项,但是当我尝试在我的Settings.java类中设置它时,我在addPreferencesFromRecource(R.xml.preferences)的xml下面得到一个红色下划线。我找到了这个话题R.xml.preferences cannot be found?,其中有人遇到与我一样的问题,并建议包含导入(在我的情况下是导入com.example.anneholmes.R)并检查首选项的位置。 XML。 我的preferences.xml位于res / xml文件夹中,我进行了导入;但是,它并没有解决我的错误。我该如何解决这个错误?
这是Settings.java代码
package com.example.anneholmes;
import android.app.Activity;
import com.example.anneholmes.R; //did import
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceFragment;
public class Settings extends Activity {
//code
.
.
.
}
public static class PrefsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences); // error
Preference submitPref = (Preference)findPreference("submitPref");
submitPref.setOnPreferenceClickListener(new OnPreferenceClickListener(){
//code
.
.
.
这是来自preferences.xml的XML
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="PERSONAL INFORMATION">
<EditTextPreference
android:key="firstName"
android:title="First Name"
android:summary="Enter your First Name"
android:dialogTitle="Enter your first name">
</EditTextPreference>
<EditTextPreference
android:key="lastName"
android:title="Last Name"
android:summary="Enter your Last Name"
android:dialogTitle="Enter your last name">
</EditTextPreference>
<EditTextPreference
android:key="email"
android:title="Email address"
android:summary="Enter your email address"
android:dialogTitle="Enter your email address">
</EditTextPreference>
</PreferenceCategory>
<PreferenceCategory android:title="Colors">
<ListPreference
android:entries="@array/colors"
android:entryValues="@array/colorSelected"
android:key="textcolor"
android:summary="Choose the Font Color"
android:title="Foreground Color"/>
<ListPreference
android:entries="@array/colors"
android:entryValues="@array/colorSelected"
android:key="color"
android:title="Background Color"
android:summary="Choose the Background Color"/>
</PreferenceCategory>
<Preference
android:title="Save this Information"
android:key="submitPref"/>
</PreferenceScreen>
答案 0 :(得分:2)
您永远不会关闭<PreferenceScreen>
标记,因此此处的XML无效。
因为它无效,所以它不会编译,因此不会有一个int放入你试图从Java代码中引用的R中。
这就是它说它不存在的原因。它在任何地方都没有得到很好的解释,所以我以前必须自己找到它。
答案 1 :(得分:0)
将此行添加到清单文件:
<activity android:name=".preferences"></activity>