2012-05-16 13 views
5

Tôi nhận được cảnh báo sau cho mỗi tùy chọn XML của tôi
và tôi hiểu java nghĩ rằng các giá trị mặc định mà tôi đã cung cấp là số nguyên và nó mong đợi các chuỗi. Nhưng làm thế nào để tôi đặt một chuỗi chữ?
Tôi có thể sống với cảnh báo, vì tôi biết nó vô hại, nhưng nếu có một cách đơn giản để sửa chữa nó tôi sẽ.Tài nguyên Android Tại sao java nghĩ chuỗi là số nguyên?

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} 

Đây là 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

cũng thêm giá trị này vào 'string.xml' và đặt giá trị mặc định? –

+0

@samirmangroliya, tôi đoán điều đó sẽ hiệu quả. Tôi đã mong đợi một số giải pháp đơn giản hơn, thay vì "5000" sử dụng "@ 5000" hoặc một cái gì đó tương tự. – ilomambo

+0

xem câu trả lời của tôi ... –

Trả lời

4

Thêm dòng này trong string.xml

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

ans thiết lập nó trong defaultvalue..you có thể làm điều đó cho người khác DefaultValue ...

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

Cảm ơn bạn, nhưng nếu bạn nhìn vào XML tôi đã đăng, bạn có thể thấy có nhiều giá trị mặc định khác nhau, tôi không thể gán cùng một giá trị cho tất cả. Và cũng là câu hỏi là ** Làm thế nào để đặt một chuỗi chữ? ** chữ, trái với tham chiếu. – ilomambo

+0

tạo trong string.xml cho mỗi và không biết điều gì là cuối cùng? –

+0

Literal => "5000" so với Tham chiếu => "@ string/five_thousand" ::::: Nói cách khác, đây không phải là câu trả lời cho câu hỏi của tôi. – ilomambo

-1

Trong thực tế, bạn có thể thử điều này, chỉ cần thêm một không gian sau khi giá trị:

<EditTextPreference 
    android:defaultValue="5000 " 

Nhưng bạn cần phải trim() chuỗi trước khi bạn chuyển sang đánh giá cao, ví dụ: Integer.valueOf (prefer.getstring . (...) cắt())

2

đúp trích dẫn mỗi defaultValue đã thoát khỏi những lời cảnh báo đối với tôi, nhưng nó tạo ra các vấn đề khác:

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

trong khi defaultValue là một chuỗi XML, có vẻ như rằng các dấu ngoặc kép bên ngoài bị tước bỏ trước khi được gửi tới java.

Nhưng khi bạn cố chỉnh sửa tùy chọn trong ứng dụng Android, hộp giờ đây chứa chuỗi '5000' thay vì số 5000, điều này có thể dẫn đến các sự cố khác.

Nếu chúng ta phải chịu đựng những cảnh báo không cần thiết hoặc các trường không hợp lệ, tôi cho rằng đây là tùy chọn thực sự duy nhất.

Các vấn đề liên quan