来自 Google 地图的 NullPointerException

Posted

技术标签:

【中文标题】来自 Google 地图的 NullPointerException【英文标题】:NullPointerException from Google maps 【发布时间】:2016-03-15 07:00:17 【问题描述】:

我最近刚开始收到来自 android 谷歌地图的 nullpointerexception,但我不知道是什么原因造成的。目前它仅在运行 android 4.1 的 HTC Desire 500 (z4u) 设备上被报告。任何建议或想法将不胜感激。

编辑:

所以我得到了一个给出错误的设备(HTC Desire、Android 4.1.2、HTC SDK API 5.26)。正如我从跟踪中怀疑的那样,这纯粹是内部错误。 以下没有帮助:

正在重启 重新安装 最新版本的 google play 服务 更新应用以使用播放服务 8.3.0

堆栈跟踪如下所示:

java.lang.RuntimeException: Unable to resume activity dk.mobikom.android/dk.mobikom.android.activities.ContactDetailActivity: java.lang.NullPointerException
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3036)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3077)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2373)
    at android.app.ActivityThread.access$600(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:155)
    at android.app.ActivityThread.main(ActivityThread.java:5536)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
    at com.google.maps.api.android.lib6.gmm6.m.ad.a(Unknown Source)
    at com.google.maps.api.android.lib6.gmm6.c.h.a(Unknown Source)
    at com.google.maps.api.android.lib6.gmm6.c.y.a(Unknown Source)
    at com.google.maps.api.android.lib6.e.bd.a(Unknown Source)
    at com.google.maps.api.android.lib6.e.ev.a(Unknown Source)
    at com.google.maps.api.android.lib6.e.z.a(Unknown Source)
    at com.google.maps.api.android.lib6.e.y.a(Unknown Source)
    at com.google.android.gms.maps.internal.u.onTransact(SourceFile:107)
    at android.os.Binder.transact(Binder.java:326)
    at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment$zza.onCreateView(Unknown Source)
    at com.google.android.gms.dynamic.zza$4.zzb(Unknown Source)
    at com.google.android.gms.dynamic.zza.zza(Unknown Source)
    at com.google.android.gms.dynamic.zza.onCreateView(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source)
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1026)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
    at android.support.v4.app.Fragment.performResume(Fragment.java:2012)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1189)
    at android.support.v4.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:2011)
    at android.support.v4.app.FragmentController.dispatchResume(FragmentController.java:187)
    at android.support.v4.app.FragmentActivity.onResumeFragments(FragmentActivity.java:426)
    at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:415)
    at android.support.v7.app.AppCompatActivity.onPostResume(AppCompatActivity.java:141)
    at android.app.Activity.performResume(Activity.java:5161)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3019)
    ... 12 more

【问题讨论】:

最新版本的谷歌地图似乎有谷歌地图问题(我在 v7.8 上没有看到这个问题)。我们用的是谷歌地图v8.3,你用的是什么版本? 有什么办法可以解决这种问题吗? @Ram 还没有。正在调查 google play 服务的客户端更新是否可以解决问题... 我也在 HTC Desire X 4.1.1 上得到了这个 code.google.com/p/gmaps-api-issues/issues/… 【参考方案1】:

因此怀疑这是谷歌方面的一个问题。他们已经验证了该错误并正在修复 (2015-12-21),有关该问题的最新信息,请参阅 googles bug tracker。

编辑:

所以我必须测试 Georges SD 信息,是的,插入 SD 卡解决了问题。因此,从这里我们可以得出结论,没有内部假外部存储的手机(就像现在的大多数手机一样)会因为这个错误而崩溃......所以这对于那些在企业领域工作的人来说可能是一种解决方法,但对于那些在消费者领域工作的人,这并没有太大帮助......

2016 年 1 月 20 日编辑

Google 团队的一位开发人员宣布已修复,并将在 Google Play 的下一个主要版本中推出,但他们尚未为此设定时间表。

2016 年 6 月 2 日编辑

Google 团队的一位开发人员宣布已确认已修复:

抱歉,这花了很长时间才修复,但这是您一直在修复的错误 敬请期待!

我们可以确认此问题现已在 9.0.83 版中得到修复 Google Play 服务,于 2016 年 5 月发布。

【讨论】:

同样的问题!当这个问题被修复时,请注意每个人 @JoeCoolman 最简单的方法是在 Google 上为该问题加注星标,然后您将自动获得更新。我会更新这篇文章,但我认为你不会收到通知。 好的@Warpzit,我看到这个问题出现在 12 月 12 日,直到今天它还没有被谷歌程序员修复,哇:O 在我的情况下,我也得到了 android.view.InflateException ,然后,在某个很深的地方,我得到了你的 NullPointer。得到它 3 小时解决并尝试了来自 *** 上其他 10 个线程的每个转储解决方案的人建议。非常感谢。 不知道为什么要花这么长时间!它的简单修复,只是在没有 sdcard 的情况下回退到内部存储!【参考方案2】:

好的,5 小时后在我的案例中找到了解决方案。

没有触摸设备(HTC Desire X 4.1.1),我所做的只是安装了一张 SD 卡,错误就神奇地消失了。安装 SD 卡,重启(在此过程中更新了谷歌照片,我认为这与问题无关)。

为了大声哭泣!

【讨论】:

我会在周末进行测试;)期待看看是否是这种情况。 感谢乔治的信息。当我与企业部门的客户合作时,这实际上会对我有所帮助。【参考方案3】:

在我的模拟器上添加 SD 卡的大小对我有用。

Emulator Android

【讨论】:

【参考方案4】:

这些你试过了吗

<!-- EXTERNAL_STORAGE permissions are optional for Android 6.0 onwards. -->
    <uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        android:maxSdkVersion="22" />
    <uses-permission
        android:name="android.permission.READ_EXTERNAL_STORAGE"
        android:maxSdkVersion="22" />

这可能会解决问题。

【讨论】:

由于问题发生在 Google 地图内部,因此该建议非常愚蠢。谷歌也承认存在错误。第三,是的,该应用程序已经拥有这些权限。

以上是关于来自 Google 地图的 NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章

FragmentActivity 中的 Nullpointer 异常,同时在 Spinner 中显示来自数据库的数据

ActionScript 3 来自Google地图的地理位置

来自 JSON 的 Google 地图上的标记

在 Google 地图 v3 中显示来自方向渲染标记的路线详细信息

UnitTesting Android TabActivity时获取Nullpointer异常

如何使用 React 和 Google Places API 在 Google 地图上显示地点标记?