gpt4 book ai didi

java - Android DefaultSharedPreferences 字符串而不是整数

转载 作者:行者123 更新时间:2023-12-01 12:50:16 25 4
gpt4 key购买 nike

我有一个方法可以从 DefaultSharedPreferences 中读取一个字符串和两个整数。当我尝试将 DefaultSharedPreferences 中的两个整数中存储的值放入其他两个整数时,我收到一条错误消息,指出这两个保存的整数 (DefaultSharedPreferences) 是实际上是字符串。这是来自 LogCat 的错误:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer at android.app.SharedPreferencesImpl.getInt(SharedPreferencesImpl.java:221)

这是我的preferences.xml(其中我的两个 int 字段设置为 android:inputType="number")以及尝试读取值的方法:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

<EditTextPreference
android:defaultValue="@string/set_ip_server"
android:key="ip_server"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/put_ip"
android:title="@string/set_ip_server" />
<EditTextPreference
android:inputType="number"
android:defaultValue="@string/set_port_server"
android:key="port_server"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/put_port"
android:title="@string/set_port_server" />
<EditTextPreference
android:inputType="number"
android:defaultValue="@string/set_port_client"
android:key="port_android"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/put_port"
android:title="@string/set_port_client" />

string ip_server;
int port_server;
int port_android;
public void read_connection_params()
{
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
ip_server=pref.getString("ip_server", "192.168.0.102");
port_server=pref.getInt("port_server", 1234);
port_android=pref.getInt("port_android", 37123);
}

我已经仔细检查了与这两个“整数”相关的所有内容 - port_server 和 port_android,但我没有主意了。

编辑:我尝试了 Integer.parseInt(preferences.getString("defaultTip", "15")) 但我仍然遇到相同的错误。

最佳答案

EditTextPreference 保存的值是 String,但您试图在此处获取该键下的 int

port_server=pref.getInt("port_server", 1234);
port_android=pref.getInt("port_android", 37123);

一定是

port_server = Integer.parseInt(pref.getString("port_server", "1234"));
port_android = Integer.parseInt(pref.getString("port_android", "37123"));

如果您要使用任何ListPreference,这同样适用。

关于java - Android DefaultSharedPreferences 字符串而不是整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24273925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com