getInt 中的 Android SharedPreferences 异常

我正在尝试使用SharedPreferences并且偶然发现了我的一个可能很愚蠢的错误。这是我的代码(MainActivity类):


private Boolean checkSSID;

private String connectionSSID;

private int leftPort;

private int rightPort;

private int LLUPort;

private int localUDPPort;

private String platformIPAddrStr;

在onCreate()方法的底部:


PreferenceManager.setDefaultValues(this, R.xml.preferences, false);


SharedPreferences sharedPref =

        PreferenceManager.getDefaultSharedPreferences(this);


checkSSID = sharedPref.getBoolean

        (SettingsActivity.KEY_PREF_CHECK_SSID, false);


connectionSSID = sharedPref.getString

        (SettingsActivity.KEY_PREF_CONNECTION_SSID, "\"bulldog\"");


leftPort = sharedPref.getInt

        (SettingsActivity.KEY_PREF_LEFT_UDP_PORT, 4001);


rightPort = sharedPref.getInt

        (SettingsActivity.KEY_PREF_RIGHT_UDP_PORT, 4002);


LLUPort = sharedPref.getInt

        (SettingsActivity.KEY_PREF_LLU_UDP_PORT, 8888);


localUDPPort = sharedPref.getInt

        (SettingsActivity.KEY_PREF_LOCAL_UDP_PORT, 5555);


platformType = sharedPref.getInt

        (SettingsActivity.KEY_PREF_PLATFORM_TYPE,0);

在第一次getInt()调用应用程序崩溃时出现此错误:


java.lang.RuntimeException: Unable to start activity ComponentInfo{it.xxx/it.xxx.MainActivity}: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer


Cats萌萌
浏览 236回答 3
3回答

ibeautiful

EditTextPreference返回String值,如ListPreference. 您需要将从共享首选项中提取的每个值从 转换String为int。例如:platformType  = Integer.valueOf(sharedPref.getString         (SettingsActivity.KEY_PREF_PLATFORM_TYPE,"0"));

梵蒂冈之花

从 XML 资源加载首选项只能处理字符串(据我所知)。在您的场景中,这是@string:<android.support.v7.preference.SwitchPreferenceCompat&nbsp; &nbsp; android:defaultValue="true"&nbsp; &nbsp; android:key="checkSSID"&nbsp; &nbsp; android:summary="@string/checkSSID_summary"&nbsp; &nbsp; android:title="@string/checkSSID_title" />因此,我不知道getInt等其他方法的用例,但我最终也将其作为字符串加载,然后将其解析/转换为所需的类型,如 @xcesco 的 describe。

慕标5832272

尝试像这样声明你的 int 值public&nbsp;static&nbsp;final&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEY_PREF_LEFT_UDP_PORT&nbsp;=&nbsp;1000;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java