6

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>
4

3 に答える 3

4

この行を追加しますstring.xml

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

ansはdefaultvalueに設定します..他のdefaultvalueに対しても実行できます...

<EditTextPreference
    android:defaultValue="@string/five_thousand"
    android:key="@string/MAX_MESSAGES"
    android:summary="@string/MAX_MESSAGES_desc"
    android:title="@string/MAX_MESSAGES_title" />
于 2012-05-16T13:47:09.457 に答える
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' が含まれるようになり、別の問題が発生する可能性があります。

不必要な警告または無効なフィールドのいずれかを許容する必要がある場合、前者が唯一の現実的なオプションだと思います。

于 2015-02-09T15:24:10.330 に答える
-1

実際、値の後にスペースを追加するだけで、これを試すことができます。

<EditTextPreference
    android:defaultValue="5000 "

ただし、値に転送する前に文字列を trim() する必要があります。例: Integer.valueOf(prefer.getstring(...).trim())

于 2014-04-04T10:30:34.147 に答える