Java GoogleApiAvailability.getErrorDialog()可以';找不到字符串资源
我有以下代码:Java GoogleApiAvailability.getErrorDialog()可以';找不到字符串资源,java,android,google-play-services,Java,Android,Google Play Services,我有以下代码: 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
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()
引发此异常:
java.lang.NoSuchFieldError:无静态字段
普通\谷歌\播放\服务\更新\课堂上I类文本
Lcom/google/android/gms/R$string;或其超类(声明
“com.google.android.gms.R$string”出现在
/data/app/com.mygame-1/base.apk)
如何修复此问题?此错误意味着该类没有指定名称的字段。如果应用程序试图访问或修改某个对象的指定字段,而该对象不再具有该字段,则会抛出该字段。通常,此错误由编译器捕获,并且仅当类的定义发生不兼容的更改时,才会在运行时发生
另外,可能您有旧代码引用了重新编译的类文件中不再存在的字段。你可以检查一下
解决方案是清除所有类文件,并从fresh编译所有内容
更新:如果在重新编译所有内容后仍然出现相同的错误,则可能是针对外部库的一个版本进行编译,并在运行时使用另一个版本
您现在需要做的是首先确定导致问题的类(看起来您已经这样做了),然后使用-verbose:class
命令行选项运行应用程序。它将在您的标准输出上转储大量类加载信息,您将能够找到问题类的确切加载位置
希望这有帮助 代码运行时,字符串common\u google\u play\u services\u update\u text正确写入LogCat。因此,getErrorDialog()必须是一个错误。