Я пытаюсь использовать 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
Макет PreferenceScreen:
<PreferenceScreen xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="checkSSID"
android:summary="@string/checkSSID_summary"
android:title="@string/checkSSID_title" />
<EditTextPreference
android:defaultValue="bulldog"
android:key="connectionSSID"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/LLUUDPPort_summary"
android:title="@string/LLUUDPPort_title" />
<EditTextPreference
android:defaultValue="192.168.1.40"
android:key="platformIPAddr"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/PlatformIPAddr_summary"
android:title="@string/PlatformIPAddr_title" />
<ListPreference
android:defaultValue="1"
android:entries="@array/PlatformType_titles"
android:entryValues="@array/PlatformType_values"
android:key="platformType"
android:summary="@string/PlatformType_summary"
android:title="@string/PlatformType_title" />
<EditTextPreference
android:defaultValue="4001"
android:key="leftBankUDPPort"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/LeftBankUDPPort_summary"
android:title="@string/LeftBankUDPPort_title" />
<EditTextPreference
android:defaultValue="4002"
android:key="rightBankUDPPort"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/RightBankUDPPort_summary"
android:title="@string/RightBankUDPPort_title" />
<EditTextPreference
android:defaultValue="8888"
android:key="LLUUDPPort"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/LLUUDPPort_summary"
android:title="@string/LLUUDPPort_title" />
<EditTextPreference
android:defaultValue="5555"
android:key="localUDPPort"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/localUDPPort_summary"
android:title="@string/localUDPPort_title" />
</PreferenceScreen>
В SettingsActivity Я объявил всепубличные строки, используемые для вызова ключа настроек .. т.е.:
public static final String
KEY_PREF_CHECK_SSID = "checkSSID";
Где я потерпел неудачу?