設定アクティビティをセットアップしようとしていますが、アプリがクラッシュし続け、次の logcat が表示されます:
致命的な例外: 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): 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 のみを入力できるようにするために使用しています。また、キャッシュをクリアするためにアプリをアンインストールして再インストールしようとしましたが、何も機能しません。
解決済み:
「android:inputType="number" を設定しても、XML の設定は文字列として保存されます」 (by Waza_Be )。私がしなければならなかったのはInteger.parseInt()
、正しい値を取得することだけです。