2012-05-16 56 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,這可能會導致其他問題。

如果我們必須容忍不必要的警告或無效的字段,我想前者是唯一真正的選擇。

相關問題