【问题标题】:MapWidget crash issue while using on Fragment在 Fragment 上使用时 MapWidget 崩溃问题
【发布时间】:2019-01-10 22:57:34
【问题描述】:

我正在尝试在 Android Fragment 中使用 DJI UX SDK Map-widget。它在活动中工作正常,但是当我使用带有片段的小部件时它不起作用。

有谁知道问题出在哪里?

这是我已经实现的代码。

public class HomeFragment extends Fragment{
    private MapWidget mapWidget;

    public HomeFragment() {
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View inflate = inflater.inflate(R.layout.fragment_home, container, false);
        mapWidget = inflate.findViewById(R.id.map_widget);
        mapWidget = inflate.findViewById(R.id.map_widget);
        mapWidget.initGoogleMap(new MapWidget.OnMapReadyListener() {
            @Override
            public void onMapReady(@NonNull DJIMap djiMap) {
            }
        });
        return inflate;
    }

    @Override
    public void onResume() {
        super.onResume();
        mapWidget.onResume();
    }

    @Override
    public void onPause() {
        super.onPause();
        mapWidget.onPause();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mapWidget.onDestroy();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        mapWidget.onLowMemory();
    }
}

堆栈跟踪

原因:java.lang.NullPointerException:尝试在空对象引用上调用接口方法“void com.google.maps.api.android.lib6.impl.bo.o()” 在 com.google.maps.api.android.lib6.impl.cw.b(:com.google.android.gms.dynamite_mapsdynamite@12874021@12.8.74 (040306-204998136):21) 在 com.google.android.gms.maps.internal.w.a(:com.google.android.gms.dynamite_mapsdynamite@12874021@12.8.74 (040306-204998136):12) 在 fc.onTransact(:com.google.android.gms.dynamite_mapsdynamite@12874021@12.8.74 (040306-204998136):12) 在 android.os.Binder.transact(Binder.java:387) 在 com.google.android.gms.internal.zzeu.zzb(未知来源) 在 com.google.android.gms.maps.internal.zzk.onResume(未知来源) 在 com.google.android.gms.maps.MapView$zza.onResume(未知来源) 在 com.google.android.gms.dynamic.zzh.zzb(未知来源) 在 com.google.android.gms.dynamic.zzb.zza(未知来源) 在 com.google.android.gms.maps.MapView$zzb.zza(未知来源) 在 com.google.android.gms.dynamic.zza.zza(未知来源) 在 com.google.android.gms.dynamic.zza.onResume(未知来源) 在 com.google.android.gms.maps.MapView.onResume(未知来源) 在 dji.ux.widget.MapWidget.onResume(未知来源) 在 com.xxx.xxx.HomeFragment.onResume(HomeFragment.java)

【问题讨论】:

  • 试试这个链接,最后它有一些解决方案-github.com/mapbox/mapbox-gl-native/issues/11121
  • @Thunder 我已经实现了 MapView 并且工作正常,但我想使用 DJI MapWidget。因为它们在地图上提供了更多功能。

标签: android android-fragments dji-sdk


【解决方案1】:

试试这样的:

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View inflate = inflater.inflate(R.layout.fragment_home, container, false);
    mapWidget = inflate.findViewById(R.id.map_widget);
    mapWidget.initGoogleMap(new MapWidget.OnMapReadyListener() {
        @Override
        public void onMapReady(@NonNull DJIMap djiMap) {
        }
    });
    mapWidget.onCreate(savedInstanceState); // add this line

    return inflate;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多