私はprefsを実装しようとしていました。優先順位の問題が発生したばかりです。それは、私がonCreate()メソッドに書いた行からのものであることを示しているようです。Prefs Error - Android '原因:java.lang.ClassCastException:java.lang.Booleanをjava.lang.Stringにキャストすることができません'
具体的には以下の言っログに -
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.your.app/com.your.app.activity}: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:225)
at com.your.app.activity.onCreate(ShopActivity.java:105*At the oncreate shown*)
だから私はこの問題を解決しようとしていたが、私は解決策を見つけることができませんでした。私はコードを使ってゲームを作っていましたが、以下で見ることができるコインのシステムを作成し、タグシステムを使って車をスクロールさせることもできました。問題は、そのアクティビティをロードするたびにそのエラーが表示されるようです。 私は以前にこの問題を抱えておらず、別の方法を使用していました。ここにコードがあります。すべての助けに感謝します。また、エラーを修正しようとしている間にコードが編集されました。またonCreate-における問題に関与する実際のコードについて
SharedPreferences.Editor prefsEditor = prefs.edit();
prefsEditor.putString(savelocked,status1);
prefsEditor.putString(savelocked2,status2);
prefsEditor.putString(savelocked3,status3);
prefsEditor.putString(savelocked4,status4);
prefsEditor.putString(savelocked5,status5);
prefsEditor.apply();
- -
のonCreate方法について- OnDestroy方法について
prefs = this.getSharedPreferences(
"com.this.app", Context.MODE_PRIVATE);
status1 = prefs.getString(savelocked,"Locked");
status2 = prefs.getString(savelocked2,"Locked");
status3 = prefs.getString(savelocked3,"Locked");
status4 = prefs.getString(savelocked4,"Locked");
status5 = prefs.getString(savelocked5,"Locked");
locked = status1;
locked2 = status2;
locked3 = status3;
locked4 = status4;
locked5 = status5;
-
final ImageView buy = (ImageView) findViewById(R.id.imageView26);
final ImageView car = (ImageView) findViewById(R.id.imageView9);
car.setTag("sportscar1");
final ImageView use = (ImageView) findViewById(R.id.imageView5);
buy.setImageResource(R.drawable.bull);
if(car.getTag()=="sportscar1") {
if (locked.equals("Locked")) {
use.setImageResource(R.drawable.bull2);
}
}else{use.setImageResource(R.drawable.use);}
final ImageView right = (ImageView) findViewById(R.id.imageView25);
final ImageView left = (ImageView) findViewById(R.id.imageView24);
buy.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (car.getTag() == "sportscar1") {
if (locked.equals("Locked") && GameView.coinz >= 1) {
status1="Unlocked";
Colors.color1 = "sportscar1";
GameView.coinz = GameView.coinz - 1;
Toast.makeText(context, " - 1 Car Token",
Toast.LENGTH_SHORT).show();
Toast.makeText(context, "You just bought the sports car!",
Toast.LENGTH_LONG).show();
use.setImageResource(R.drawable.use);
buy.setImageResource(R.drawable.bull);
} else {
Toast.makeText(context, " Not enough Car Tokens.",
Toast.LENGTH_SHORT).show();
}
}
});
left.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (car.getTag() == "sportscar1") {
buy.setImageResource(R.drawable.bull);
use.setImageResource(R.drawable.bull2);
car.setTag("sportscar2");
if (locked2.equals("Locked")) {
car.setImageResource(R.drawable.sportscar2_locked);
buy.setImageResource(R.drawable.buy);
use.setImageResource(R.drawable.bull2);
} else if (locked2.equals("Unlocked")) {
car.setImageResource(R.drawable.sportscar2_show);
buy.setImageResource(R.drawable.bull);
use.setImageResource(R.drawable.use);
}
}
});
right.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (car.getTag() == "sportscar1") {
buy.setImageResource(R.drawable.bull);
use.setImageResource(R.drawable.bull2);
car.setTag("thecar1");
if (locked5.equals("Locked")) {
car.setImageResource(R.drawable.thecar1_locked);
buy.setImageResource(R.drawable.buy);
use.setImageResource(R.drawable.bull2);
} else if (locked5.equals("Unlocked")) {
car.setImageResource(R.drawable.thecar1_show);
buy.setImageResource(R.drawable.bull);
use.setImageResource(R.drawable.use);
}
}
}
});
use.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (car.getTag() == "sportscar2") {
Colors.color1 = "sportscar2";
status2="Unlocked";
Toast.makeText(context, "You just selected the second sports car!",
Toast.LENGTH_LONG).show();
buy.setImageResource(R.drawable.bull);
use.setImageResource(R.drawable.use);
}
}
});
(開始活動で)インスタンス化個の 変数 - 任意の助け
private String savelocked = "Locked or Unlocked";
private String savelocked2 = "Locked or Unlocked";
private String savelocked3 = "Locked or Unlocked";
private String savelocked4 = "Locked or Unlocked";
private String savelocked5 = "Locked or Unlocked";
public String status1 = "Locked";
public String status3 = "Locked";
public String status2 = "Locked";
public String status4 = "Locked";
public String status5 = "Locked";
public String locked;
public String locked2;
public String locked3;
public String locked4;
public String locked5;
private static SharedPreferences prefs;
感謝。 ==を使用していたときに私は以前にこの問題を抱えていませんでしたが、今回は.equals()を使用しています。長いコードを残念に思っています。そして助けてください。すべての助けに感謝します。あなたの時間をありがとう。 - 多くのコードがカットオフされており、上のコードは一般的な意味を示しています。 編集2 - インスタンス化された変数も含まれています。 再度お返事ありがとうございます。
これはあまりにも多くのコードです。あなたが持っている問題を示す最小限の完全な例を書いて、私たちがあなたを助けてくれるように助けてください。 (あなた自身が問題を解決するのを手助けするプロセスがあなた自身を解決するのに役立つかもしれません。) – yshavit
Ok。ありがとう。一分。私はその時の一般的な考えを得るでしょう。ありがとう。 –
ちょうど編集されました。ご協力いただきありがとうございます。 –