Google Developer Console 显示我的应用程序在同一通道的java.lang.ClassCastException
2 个不同设备(P10 (HWVTR)-Android 7.0
和LG G3 (g3) - Android 6.0
)上出错。我不知道是什么问题,我已经测试过了Samsung Galaxy A3 2014 & 2017 and Huawei P9 Lite
,效果很好。
这是代码:
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)
有可能我的 SharedPreferences 与密钥HAS_VISISTED_BEFORE
干扰另一个具有相同密钥的应用程序吗?
每个应用程序都有自己的共享首选项位置,因此无法干扰具有相同密钥的另一个应用程序。
如果您的应用程序的旧版本具有相同的键,HAS_VISISTED_BEFORE
并且其值不是整数,则会遇到此问题。因为你已经有了这个键的值,而且类型不同。
对于此异常,您可以使用如下所示的 try-catch。
try {
}catch (ClassCastException ex){
ex.printStackTrace();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句