Googleデベロッパーコンソールで、同じレーンに2つの異なるデバイス(P10 (HWVTR)-Android 7.0
とLG G3 (g3) - Android 6.0
)でアプリがjava.lang.ClassCastException
エラーが発生しています。私は何が問題なのかわからない、私はSamsung Galaxy A3 2014 & 2017 and Huawei P9 Lite
でそれをテストし、素晴らしい作品です。一部の端末でjava.lang.ClassCastExceptionが発生しました
SharedPreferences prefs = this.getSharedPreferences(
"toast", Context.MODE_PRIVATE);
final int hasVisited = prefs.getInt("HAS_VISISTED_BEFORE", 0);
if(hasVisited == 0) {
AlertDialog.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert);
} else {
builder = new AlertDialog.Builder(this);
}
builder.setTitle("My Text")
.setMessage("My Text, dsajh jghjsahjhsda dsa dsa")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(android.R.drawable.ic_dialog_info)
.show();
prefs.edit().putInt("HAS_VISISTED_BEFORE", 1).apply();
}
エラーがここにfinal int hasVisited = prefs.getInt("HAS_VISISTED_BEFORE", 0);
私はアプリがあれば最初に実行したときに一度だけこのAlertDialog
を表示したいです:ここでは
エラーログ:
Caused by: java.lang.ClassCastException:
at android.app.SharedPreferencesImpl.getInt (SharedPreferencesImpl.java:242)
at com.doggedness_dev.pubgcratessimulator.MenuActivity.onCreate (MenuActivity.java:40)
at android.app.Activity.performCreate (Activity.java:6272)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2387)
キーHAS_VISISTED_BEFORE
と私のSharedPreferencesは、同じキーを持つ別のアプリに干渉することは可能でしょうか?
() 'prefs.edit()putInt( "HAS_VISISTED_BEFORE"、1).commit()(コミットしてみてください)の代わりに適用されます。' 'コミットので()は'スレッドをブロック(同期してデータを書き込み、その由来から)。その後、操作の成功を通知します。 'apply()'は、非同期で書き込まれるデータをスケジュールします。操作の成功を通知するものではありません。 –
私は変更します、ありがとう! –