2012-05-16 57 views
5

我得到了我的每个XML首选项
的以下警告,我知道java认为我给出的默认值是整数,它期望字符串。但是我怎样才能放一个文字字符串?
我可以忍受警告,因为我知道这是无害的,但如果有一个简单的方法来纠正它,我会的。Android资源为什么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

在'string.xml'中添加这个值并设置defaultvalue? –

+0

@samirmangroliya,我想这会工作。我期待一些更简单的解决方案,而不是“5000”使用“@ 5000”或类似的东西。 – ilomambo

+0

看到我的回答... –

回答

4

加入这一行string.xml

<string name="five_thousand">5000</string>

ANS设置在defaultvalue..you可以做到这一点给别人默认值...

<EditTextPreference 
    android:defaultValue="@string/five_thousand" 
    android:key="@string/MAX_MESSAGES" 
    android:summary="@string/MAX_MESSAGES_desc" 
    android:title="@string/MAX_MESSAGES_title" /> 
+0

谢谢,但如果你看看我发布的XML,你可以看到有很多不同的默认值,我不能分配给所有人。而且问题是**如何将文字字符串?**文字,而不是引用。 – ilomambo

+0

在string.xml中为每个创建,并且不知道上一次是什么? –

+0

Literal =>“5000”与Referenced =>“@ string/five_thousand”:::::换句话说,这不是我的问题的答案。 – ilomambo

-1

事实上,你可以试试这个,只是在值后添加一个空格:

<EditTextPreference 
    android:defaultValue="5000 " 

但是你需要你转移到值之前,例如修剪()的字符串:Integer.valueOf(prefer.getstring (...)修剪())

2

双引号每一个默认值摆脱了警告我的,但它创造了其他问题:

<EditTextPreference 
    android:defaultValue="'5000'" 
    android:key="@string/MAX_MESSAGES" 
    android:summary="@string/MAX_MESSAGES_desc" 
    android:title="@string/MAX_MESSAGES_title" /> 

虽然默认值是一个字符串,XML,似乎外部引号在被发送到java之前被剥离。

但是,当您尝试在Android应用程序中编辑首选项时,该框现在包含字符串'5000'而不是数字5000,这可能会导致其他问题。

如果我们必须容忍不必要的警告或无效的字段,我想前者是唯一真正的选择。

相关问题