12 java string android integer sharedpreferences
我正在尝试设置首选项活动,但我的应用程序一直崩溃,我得到以下logcat:
FATAL EXCEPTION:main 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):在android.app.SharedPreferencesImpl.getInt(SharedPreferencesImpl.的java: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));
Run Code Online (Sandbox Code Playgroud)
这是我在Preference类中的内容(根据要求):
addPreferencesFromResource(R.layout.preferences);
// I was told in tutorials this is all I need in the oncreate method
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它会说一些字符串.我的所有值都是整数,我android:inputType="number"用来确保只输入一个int.我还尝试卸载并重新安装应用程序以清除缓存,但没有任何作用.
"你的XML首选项,即使你设置android:inputType ="number"仍然存储为字符串"(由Waza_Be).我所要做的就是Integer.parseInt()抓住正确的价值.
Waz*_*_Be 23
您在XML中的首选项,即使您设置android:inputType="number"仍然存储为字符串
你有2个选择:
1)'不那么好': Integer.parseInt( preferences.getString("defaultTip", "15"));
2)使用您自己的整数首选项类型.设置起来比较复杂,但确实更好(这里的类似问题:https://stackoverflow.com/a/3755608/327402)