【发布时间】:2022-01-19 07:48:24
【问题描述】:
我在打开片段时尝试添加标记,因此在 onMap Ready 函数中我分配了我的地图,我正在调用 map onStart() 方法,但我得到了 null
@Override
public void onMapReady(@NonNull MapboxMap mapboxMap) {
map = mapboxMap;
}
@Override
public void onStart() {
super.onStart();
mapView.onStart();
Bundle args = getArguments();
if (args != null) {
System.out.println("MY PATROL => "+args);
mapboxAddMarker(args.getString("QRResult"));
}
}
public void mapboxAddMarker(String coords){
String[] coordArr =coords.split(" ");
LatLng coord = new LatLng();
coord.setLatitude(Double.parseDouble(coordArr[0]));
coord.setLongitude(Double.parseDouble(coordArr[1]));
map.addMarker(new MarkerOptions().position(coord));
}
另外,我知道 addMarker 已被弃用,但这是一个我会修复它的示例。
最后是我的错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.rtets, PID: 10727
java.lang.NullPointerException: Attempt to invoke virtual method 'com.mapbox.mapboxsdk.annotations.Marker com.mapbox.mapboxsdk.maps.MapboxMap.addMarker(com.mapbox.mapboxsdk.annotations.MarkerOptions)' on a null object reference
at com.example.rtets.ui.fragments.MyPatrolFragment.mapboxAddMarker(MyPatrolFragment.java:83)
at com.example.rtets.ui.fragments.MyPatrolFragment.onViewCreated(MyPatrolFragment.java:96)
at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2987)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:546)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8633)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
【问题讨论】:
-
你调试过你的代码吗?你确定 onMapReady 被调用了吗?
-
是的,我什至没有打电话
-
所以有你的问题。您需要在 onStart 中实例化地图
-
我无法在 onStart 中实例化地图,因为我需要 MapboxMap 对象,但我只能在 onMapReady 函数中获取此对象 我搜索了此错误,他们说您忘记调用 getMapAsync 但我没有在 onCreateView 中调用它并且它有效
-
如果
onMapReady根本没有被调用,那么你应该发布 sn-p 负责初始化地图 (onCreate?)
标签: java android nullpointerexception mapbox android-lifecycle