gpt4 book ai didi

android - MapView onCreate 在 LG 设备上抛出 NullPointerException

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:07 24 4
gpt4 key购买 nike

首先,这个问题对我来说只能在运行 Android 6 的 LG 设备(LG G4 和 G5)上重现。这个问题是通过谷歌播放服务的最后更新引入的。如果我在我的 LG 设备上手动降级谷歌播放服务,错误就消失了。不幸的是我不能告诉我的用户这样做,所以我需要找到另一个解决方案。由于此错误可通过我在 Play 商店中的应用程序重现,因此我可以确定该错误不是通过我自己的代码更改引入的。

错误是调用MapView内部的onCreate()方法产生的。我将 MapView 子类化并拥有自己的类

public class MyMap extends MapView implements OnMapReadyCallback {
...
}

在 MyMap 的构造函数中,我调用了 onCreate 方法

public MyMap() {
...
this.onCreate(null);
this.onResume();
this.getMapAsync(this);
...
}

在我运行 Android 6 的 LG 设备上,这会引发以下异常:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources com.google.maps.api.android.lib6.impl.aq.e()' on a null object reference
at com.google.maps.api.android.lib6.gmm6.vector.ah.getResources(:com.google.android.gms.DynamiteModulesB:340)
at android.util.ResolutionOverride.<init>(ResolutionOverride.java:56)
at android.view.SurfaceView.init(SurfaceView.java:207)
at android.view.SurfaceView.<init>(SurfaceView.java:187)
at com.google.maps.api.android.lib6.gmm6.vector.am.<init>(:com.google.android.gms.DynamiteModulesB:1)
at com.google.maps.api.android.lib6.gmm6.vector.ah.<init>(:com.google.android.gms.DynamiteModulesB:3)
at com.google.maps.api.android.lib6.gmm6.api.am.<init>(:com.google.android.gms.DynamiteModulesB:53)
at com.google.maps.api.android.lib6.gmm6.api.am.a(:com.google.android.gms.DynamiteModulesB:49)
at com.google.android.gms.maps.internal.bv.a(:com.google.android.gms.DynamiteModulesB:38)
at com.google.maps.api.android.lib6.impl.az.a(:com.google.android.gms.DynamiteModulesB:80)
at com.google.maps.api.android.lib6.impl.az.a(:com.google.android.gms.DynamiteModulesB:1)
at com.google.maps.api.android.lib6.impl.cw.a(:com.google.android.gms.DynamiteModulesB:18)
at com.google.android.gms.maps.internal.t.onTransact(:com.google.android.gms.DynamiteModulesB:17)
at android.os.Binder.transact(Binder.java:387)
at com.google.android.gms.maps.internal.IMapViewDelegate$zza$zza.onCreate(Unknown Source)
at com.google.android.gms.maps.MapView$zza.onCreate(Unknown Source)
at com.google.android.gms.dynamic.zza$3.zzb(Unknown Source)
at com.google.android.gms.dynamic.zza$1.zza(Unknown Source)
at com.google.android.gms.maps.MapView$zzb.zzJy(Unknown Source)
at com.google.android.gms.maps.MapView$zzb.zza(Unknown Source)
at com.google.android.gms.dynamic.zza.zza(Unknown Source)
at com.google.android.gms.dynamic.zza.onCreate(Unknown Source)
at com.google.android.gms.maps.MapView.onCreate(Unknown Source)

我在 Airbnb 的 react native map 上发现了类似的问题,但他们的解决方案似乎与我的问题无关。 https://github.com/airbnb/react-native-maps/issues/1358

非常感谢我可以尝试的任何帮助或其他想法。

最佳答案

您可以尝试使用 MapFragment 而不是 MapView,因为更新的 google play 服务 11.0.55 不支持 MapView。我使用了 MapView,它对我很有用。

Activity 类:

    private SupportMapFragment mMapFragment; 

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//return inflater.inflate(R.layout.fragment_find_direction, container, false);
View view = inflater.inflate(R.layout.fragment_find_direction, null, false);
SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager()
.findFragmentById(R.id.map_fragment);
mMapFragment.getMapAsync(this);
mMapFragment = mapFragment;
return view;
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mMapFragment.onCreate(savedInstanceState);
}

XML类:

<fragment
class="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/main_lay"
android:apiKey="@string/google_map_key"
android:clickable="true"
android:enabled="true"
android:focusable="true"
app:layout_collapseMode="parallax">
</fragment>

关于android - MapView onCreate 在 LG 设备上抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44623970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com