有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java SharedRef。getString()从ListPreference的条目中选择值,而不是EntryValue

我的活动中有一个ListPreference

<ListPreference
        安卓:key="pref_rValue"
        安卓:entries="@array/r"
        安卓:summary="***"
        安卓:entryValues="@array/rValues"
        安卓:title="Choose"
        安卓:defaultValue="2"/>

安卓:entries="@array/r"安卓:entryValues="@array/rValues"strings.xml中分别定义如下:

    <string-array name="r">
        <item>0.5 km</item>
        <item>1 km</item>
        <item>2 km</item>
        <item>5 km</item>
        <item>10 km</item>
    </string-array>

    <string-array name="rValues">
        <item>0.5</item>
        <item>1.0</item>
        <item>2.0</item>
        <item>5.0</item>
        <item>10.0</item>
    </string-array>

SettingActivity中定义的键:public static final String KEY_PREF_SYNC_CONN = "pref_rValue";

下面是我如何使用这个键,然后在MainActivity中尝试获取这个ListPreference的值:

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String rValue = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "5");
Toast.makeText(getBaseContext(), "rValue: " + rValue, Toast.LENGTH_SHORT).show();

但是当我试图使用rValue字符串作为Double时,我得到了一个错误:java.lang.NumberFormatException: Invalid double: "2 km"并且上面的土司也显示了"rValue: 2 km"

我想知道为什么不是从安卓:entryValues="@array/rValues"取值,而是从安卓:entries="@array/r"取值

请帮我解决这个问题


共 (1) 个答案

  1. # 1 楼答案

    这是一个非常简单和愚蠢的问题

    我刚刚卸载了应用程序,再次安装后,一切正常

    但是,我很想知道如何确保这样的事情不会在未来再次发生