某些设备上的 java.lang.ClassCastException

莫西尼约安

Google Developer Console 显示我的应用程序在同一通道的java.lang.ClassCastException2 个不同设备(P10 (HWVTR)-Android 7.0LG 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

java.lang.ClassCastException

某些设备上的java.lang.NoClassDefFoundError异常

java.lang.LinkageError:ClassCastException

获取 java.lang.ClassCastException

java.lang.ClassCastException:错误

Spring with Querydsl :java.lang.ClassCastException

运行时java.lang.ClassCastException

java.lang.ClassCastException-Log4j

Jsf错误:java.lang.ClassCastException

java.lang.ClassCastException:创建同步的链表

java.lang.ClassCastException.如何删除?

Collection.toArray()java.lang.ClassCastException

代理创建时的 java.lang.ClassCastException

randomSplit 期间的 scala java.lang.ClassCastException

如何解决ClassCastException:无法在Android上强制抛出java.lang.String异常

java.lang.ClassCastException:models.Task无法转换为models.Task在Play Framework上

java.lang.ClassCastException:android.app.ContextImpl无法在ImageButton Android上强制转换为“活动”

如何在工具栏上设置 NavigationIcon(“java.lang.ClassCastException”错误)

java.lang.ClassCastException:[Ljava.lang.Object;

Kotlin:java.lang.ClassCastException:java.lang.Long无法转换为java.lang.Integer

java.lang.ClassCastException in java(Springboot & Mongodb) in springboot get api

如何在 Java 中修复 java.lang.ClassCastException

如何在Java中解决java.lang.ClassCastException?

java.lang.ClassCastException关于在Java中创建类的数组

Flink在Java 10上启动时失败。TaskManager:java.lang.ClassCastException:[B不能强制转换为[C

java.lang.ClassCastException:[Ljava.lang.String; 无法转换为java.lang.String

java.lang.RuntimeException:java.lang.ClassCastException:java.lang.Long无法强制转换为java.lang.String

在还原视图阶段调试JSF java.lang.ClassCastException

java.lang.ClassCastException:android.widget.EditText