BigIntegerとString変数を保存して読み込むプログラムを作成しました。私はプログラムを開始したら、それはその例外を示していますJava longを文字列にキャストできません
とjava.lang.ClassCastException:java.lang.Longのは
をjava.lang.Stringでにキャストすることはできませんそして、それは、それはここに起こると言います:
robotPrices[0] = new BigInteger(sharedPreferences.getString("rbt1price", "100"));
マイ保存方法:
public void save() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("rbt1price", robotPrices[0].toString());
editor.putString("rbt2price", robotPrices[1].toString());
editor.putString("rbt3price", robotPrices[2].toString());
editor.putString("rbt4price", robotPrices[3].toString());
editor.putString("rbt5price", robotPrices[4].toString());
editor.putString("rbt1qu", robotQu[0].toString());
editor.putString("rbt2qu", robotQu[1].toString());
editor.putString("rbt3qu", robotQu[2].toString());
editor.putString("rbt4qu", robotQu[3].toString());
editor.putString("rbt5qu", robotQu[4].toString());
editor.putLong("lvl", lvl);
editor.apply();
}
マイロード方法:
はprivate void load() {
SharedPreferences sharedPreferences =
PreferenceManager.getDefaultSharedPreferences(this);
lvl = sharedPreferences.getLong("lvl", 1);
robotPrices[0] = new BigInteger(sharedPreferences.getString("rbt1price", "100"));
robotPrices[1] = new BigInteger(sharedPreferences.getString("rbt2price", "1100"));
robotPrices[2] = new BigInteger(sharedPreferences.getString("rbt3price", "12000"));
robotPrices[3] = new BigInteger(sharedPreferences.getString("rbt4price", "130000"));
robotPrices[4] = new BigInteger(sharedPreferences.getString("rbt5price", "1400000"));
robotQu[0] = new BigInteger(sharedPreferences.getString("rbt1qu", "0"));
robotQu[1] = new BigInteger(sharedPreferences.getString("rbt2qu", "0"));
robotQu[2] = new BigInteger(sharedPreferences.getString("rbt3qu", "0"));
robotQu[3] = new BigInteger(sharedPreferences.getString("rbt4qu", "0"));
robotQu[4] = new BigInteger(sharedPreferences.getString("rbt5qu", "0"));
}
編集: が、これはあまりにも動作しません。この名前の優先順位がある場合
robotPrices[0] = new BigInteger(sharedPreferences.getLong("rbt1price", 100));
しかし、BigIntegerコンストラクタにはString型の値が必要ですが、長い値ではありません –
Javaのルールに違反して取得するつもりはありません。 'BigInteger'のドキュメントを読んだことはありますか?何故なの? http://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html#valueOf-long- –
しかし、私はこの値をStringとして保存しないので、getLong()はできません私はStringを持っています –