当前位置: 首页 > 知识库问答 >
问题:

GoogleApiAvailability.get错误对话框()找不到字符串资源

桂坚
2023-03-14

我有以下代码:

GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
String msg = getString(R.string.common_google_play_services_update_text);
Log.e(TAG, msg);
Dialog errDlg = googleAPI.getErrorDialog(MyActivity.this, result, 1111, listener);

运行此操作时,字符串common\u google\u play\u services\u update\u text正确写入LogCat,但getErrorDialog()引发此异常:

JAVAlang.NoSuchFieldError:Lcom/google/android/gms/R$string类中没有静态字段公共\谷歌\播放\服务\更新\类型I文本;或者它的超类(声明'com.google.android.gms.R$string'出现在/data/app/com.mygame-1/base.apk中)

我怎样才能解决这个问题?

共有1个答案

柯波峻
2023-03-14

错误NoSuchFieldError表示该类没有指定名称的字段。如果应用程序试图访问或修改某个对象的指定字段,而该对象不再具有该字段,则会抛出该字段。通常,此错误由编译器捕获,并且仅当类的定义发生不兼容的更改时,才会在运行时发生。

另外,可能您有旧代码引用了重新编译的类文件中不再存在的字段。你可以在这里查一下。

解决方案是清除所有的类文件,并从新鲜编译所有内容。

更新:如果在重新编译所有内容后仍然出现相同的错误,那么您可能正在针对外部库的一个版本进行编译,并在运行时使用另一个版本。

您现在需要做的是首先确定引起问题的类(看起来您已经这样做了),然后使用-详细:class命令行选项运行您的应用程序。它将在标准上倾倒大量类加载信息,您将能够找到有问题的类是从哪里加载的。

希望这能有所帮助!

 类似资料:
  • 我正在学习如何在javafx中创建对话框,我写了一段代码,这给了我一个问题。错误在createLoginDialog方法中。 错误为“无法访问TryDialogBox类型的封闭实例。必须用TryDialogBox类型的封闭实例限定分配(例如x.new A(),其中x是TryDialogBox的实例)。

  • 警告:不推荐使用属性,它对生成过程没有影响。/home/midhilaj/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.1.0.aar/be3106efb0df111fe5a3f7b356dd070b/res/values/values.xml错误:(246,5)错误:resource android:找不到attr/fontvaria

  • 我在应用程序中使用GreenDao。Proguard已启用调试生成。 添加数据绑定支持后,出现了以下问题: /app/src/main/java/com/example/MainApplication。java:29:错误:找不到符号 私人道会; 符号:class DaoSession位置:class主应用程序 同样的问题也会出现在道士身上。 此外,这个问题来了: 应用build.gradle:

  • 问题内容: 我已经声明了公共静态数组的名称和ID: 但是说: 我不知道怎么了 是我声明变量的方式还是写的方法? 问题答案: 您在静态String数组和传递给该方法的本地String变量之间发生冲突。 最好的解决方案是使用不同的名称。这将使代码更容易理解。 如果仍然坚持使用相同的名称,则可以通过使用类名称访问静态数组来解决名称冲突: 这同样适用于您的int数组和int变量。

  • 这里有一个类似的答案:如何在Java中将函数作为参数传递? 但提供的正确答案不起作用。我有一门课: 在函数内部我试图将传递到,但我得到的错误是: 找不到符号 符号:类Callable 我不知道为什么。 另外,我尝试使用返回类型字符串作为xMethod,您能传递一个返回类型不同的函数吗?

  • 我正在学习python,当我在做这个练习的时候...