亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

getInt 中的 Android SharedPreferences 異常

getInt 中的 Android SharedPreferences 異常

Cats萌萌 2021-10-27 10:54:18
我正在嘗試使用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
查看完整描述

3 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

EditTextPreference返回String值,如ListPreference. 您需要將從共享首選項中提取的每個值從 轉換Stringint。例如:

platformType  = Integer.valueOf(sharedPref.getString
        (SettingsActivity.KEY_PREF_PLATFORM_TYPE,"0"));


查看完整回答
反對 回復 2021-10-27
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

從 XML 資源加載首選項只能處理字符串(據我所知)。在您的場景中,這是@string:


<android.support.v7.preference.SwitchPreferenceCompat

    android:defaultValue="true"

    android:key="checkSSID"

    android:summary="@string/checkSSID_summary"

    android:title="@string/checkSSID_title" />

因此,我不知道getInt等其他方法的用例,但我最終也將其作為字符串加載,然后將其解析/轉換為所需的類型,如 @xcesco 的 describe。


查看完整回答
反對 回復 2021-10-27
?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

嘗試像這樣聲明你的 int 值

public static final int
        KEY_PREF_LEFT_UDP_PORT = 1000;


查看完整回答
反對 回復 2021-10-27
  • 3 回答
  • 0 關注
  • 273 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號