我正在尝试设置首选项活动,但我的应用程序不断崩溃,我得到以下 logcat:
致命异常:主要 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.appthing.myapp/com.appthing.myapp.Main}:java.lang.ClassCastException:java.lang.String 无法转换为 java.lang。整数
引起:java.lang.ClassCastException:java.lang.String 无法转换为 java.lang.Integer 07-24 16:37:59.556: E/AndroidRuntime(17384): at android.app.SharedPreferencesImpl.getInt(SharedPreferencesImpl.爪哇:240)
在我的Main
活动中,我在方法中有以下代码onResume()
:
SeekBar tipSeekBar = (SeekBar) findViewById(R.id.tipSeekBar);
SeekBar splitSeekBar = (SeekBar) findViewById(R.id.splitSeekBar);
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(this);
tipSeekBar.setProgress(preferences.getInt("defaultTip", 15));
splitSeekBar.setProgress(preferences.getInt("defaultSplit", 1));
tipSeekBar.setMax(preferences.getInt("maxTip", 25));
splitSeekBar.setMax(preferences.getInt("maxSplit", 10));
这是我在 Preference 类中的内容(根据要求):
addPreferencesFromResource(R.layout.preferences);
// I was told in tutorials this is all I need in the oncreate method
我不明白为什么它会说一些关于字符串的东西。我所有的值都是整数,我android:inputType="number"
用来确保只能输入一个 int。我还尝试卸载并重新安装该应用程序以清除缓存,但没有任何效果。
解决:
“您在 XML 中的首选项,即使您设置 android:inputType="number" 仍存储为字符串”(由Waza_Be 提供)。我所要做的就是Integer.parseInt()
抓住正确的价值。