Java Android DefaultSharedReferences字符串而不是整数

Java Android DefaultSharedReferences字符串而不是整数,java,android,string,integer,classcastexception,Java,Android,String,Integer,Classcastexception,我有一个从DefaultSharedReferences读取一个字符串和两个整数的方法。当我尝试将DefaultSharedReferences中的两个整数中存储的值放入其他两个整数时,我得到一个错误,即两个保存的整数(DefaultSharedReferences)实际上是字符串。下面是LogCat的错误: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer at android.

我有一个从DefaultSharedReferences读取一个字符串和两个整数的方法。当我尝试将DefaultSharedReferences中的两个整数中存储的值放入其他两个整数时,我得到一个错误,即两个保存的整数(DefaultSharedReferences)实际上是字符串。下面是LogCat的错误:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer at android.app.SharedPreferencesImpl.getInt(SharedPreferencesImpl.java:221)
下面是my 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" />
我已经仔细检查了所有与这两个“整数”相关的东西——port_服务器和port_android,我已经没有主意了


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

编辑文本首选项保存的值是
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
,如果您要使用任何。

可能是因为您的默认值是字符串。尝试将其更改为整数资源

起初我试过

port_server=Integer.parseInt(pref.getString("port_server", "1234"));
port_android=Integer.parseInt(pref.getString("port_android", "37123"));
结果失败了

通过使用一些临时变量,我得到了它

String port_s=preferinte.getString("port_server", "1234");                                  
String port_a=preferinte.getString("port_android", "37123");                                    
port_server=Integer.parseInt(port_s);
port_android=Integer.parseInt(port_a);

你能先把它记录下来并把结果告诉我吗
String port_s=preferinte.getString("port_server", "1234");                                  
String port_a=preferinte.getString("port_android", "37123");                                    
port_server=Integer.parseInt(port_s);
port_android=Integer.parseInt(port_a);