我对每个XML首选项都收到以下警告,并且我理解java认为我给出的默认值是整数,并且它需要字符串。但是如何设置文字字符串呢? 我可以接受警告,因为我知道它是无害的,但是如果有一种简单的方法可以纠正它,我会的。
05-16 16:28:03.210: I/ActivityManager(68): Starting activity: Intent { cmp=com.delta.app/.Preferences }
05-16 16:28:03.750: W/Resources(1869): Converting to string: TypedValue{t=0x10/d=0x1388 a=-1}
05-16 16:28:03.870: W/Resources(1869): Converting to string: TypedValue{t=0x10/d=0x64 a=-1}
05-16 16:28:03.901: W/Resources(1869): Converting to string: TypedValue{t=0x10/d=0xa a=-1}
05-16 16:28:03.970: W/Resources(1869): Converting to string: TypedValue{t=0x10/d=0x0 a=-1}
05-16 16:28:03.970: W/Resources(1869): Converting to string: TypedValue{t=0x10/d=0x2 a=-1}
这是XML:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<EditTextPreference
android:defaultValue="5000"
android:key="@string/MAX_MESSAGES"
android:summary="@string/MAX_MESSAGES_desc"
android:title="@string/MAX_MESSAGES_title" />
<EditTextPreference
android:defaultValue="100"
android:key="@string/VIEW_MAX_ROWS"
android:summary="@string/VIEW_MAX_ROWS_desc"
android:title="@string/VIEW_MAX_ROWS_title" />
<EditTextPreference
android:defaultValue="10"
android:key="@string/VIEW_EDGE_ROWS"
android:summary="@string/VIEW_EDGE_ROWS_desc"
android:title="@string/VIEW_EDGE_ROWS_title" />
<ListPreference
android:defaultValue="0"
android:entries="@array/level_list"
android:entryValues="@array/level_values"
android:key="@string/INITIAL_ORG"
android:summary="@string/INITIAL_ORG_desc"
android:title="@string/INITIAL_ORG_title" />
<ListPreference
android:defaultValue="2"
android:entries="@array/view_list"
android:entryValues="@array/view_values"
android:key="@string/INITIAL_VIEW"
android:summary="@string/INITIAL_VIEW_desc"
android:title="@string/INITIAL_VIEW_title" />
<CheckBoxPreference
android:defaultValue="true"
android:key="@string/AUTOSCROLL"
android:summary="@string/AUTOSCROLL_desc"
android:title="@string/AUTOSCROLL_title" />
<CheckBoxPreference
android:defaultValue="true"
android:key="@string/SEND_THEN_EXIT"
android:summary="@string/SEND_THEN_EXIT_desc"
android:title="@string/SEND_THEN_EXIT_title" />
<Preference
android:key="@string/DEFAULT_PREFS"
android:summary="@string/DEFAULT_PREFS_desc"
android:title="@string/DEFAULT_PREFS_title" />
</PreferenceScreen>
答案 0 :(得分:4)
在string.xml
<string name="five_thousand">5000</string>
ans将其设置为defaultvalue ..你可以为其他人设置默认值...
<EditTextPreference
android:defaultValue="@string/five_thousand"
android:key="@string/MAX_MESSAGES"
android:summary="@string/MAX_MESSAGES_desc"
android:title="@string/MAX_MESSAGES_title" />
答案 1 :(得分:2)
对每个defaultValue进行双引号删除警告,但它创建了其他问题:
<EditTextPreference
android:defaultValue="'5000'"
android:key="@string/MAX_MESSAGES"
android:summary="@string/MAX_MESSAGES_desc"
android:title="@string/MAX_MESSAGES_title" />
虽然defaultValue是XML的字符串,但似乎外部引号在被发送到java之前被剥离。
但是当您尝试在Android应用中编辑首选项时,该框现在包含字符串'5000'而不是数字5000,这可能会导致其他问题。
如果我们必须容忍不必要的警告或无效字段,我认为前者是唯一真正的选择。
答案 2 :(得分:-1)
事实上,你可以尝试这个,只需在值后添加一个空格:
<EditTextPreference
android:defaultValue="5000 "
但是你需要在转移到value之前修剪()字符串,例如:Integer.valueOf(prefer.getstring(...)。trim())