首页 > 解决方案 > 获取随机 getmapASync 空指针异常

问题描述

我正在印度尼西亚爪哇岛做一个简单的地图视图。根据 logcat,我目前在执行地图片段时遇到问题,特别是在getMapASync返回空指针引用时。

这是我的代码:

 private GoogleMap java__island_map;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    SupportMapFragment javamapFragment = (SupportMapFragment) this.getSupportFragmentManager().
            findFragmentById(R.id.java_island_map);
    javamapFragment.getMapAsync(this);

}
@Override
public void onMapReady(GoogleMap googleMap) {
    java__island_map = googleMap;

    LatLng JavaIsland = new LatLng(-7.50166466, 111.257832302);
    java__island_map.addMarker(new MarkerOptions().position(JavaIsland).title("Java Island"));
    java__island_map.moveCamera(CameraUpdateFactory.newLatLng(JavaIsland));
}

由于这不是子片段的一种形式,我尝试使用getChildSupportFragment无济于事。接下来,我尝试将片段修复为常规MapFragment,但不起作用。这是我的 XML 代码:

 <fragment
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/java_island_map"
    class="com.google.android.gms.maps.SupportMapFragment"
    android:layout_gravity="center">

</fragment>
<ScrollView .... etc

我在这里做错了什么?这将对我有很大帮助,因为我也会为其他基于地图的 UI 执行此操作。

标签: javaandroidgoogle-maps-api-3nullpointerexception

解决方案


您可以null在调用之前处理getMapAsync()。喜欢以下

 supportMapFragment = (SupportMapFragment) getSupportFragmentManager.findFragmentById(R.id.java_island_map);
 if (supportMapFragment == null) {
     FragmentManager fr = getFragmentManager();
     FragmentTransaction ft = fr.beginTransaction();
     supportMapFragment = SupportMapFragment.newInstance();

     ft.replace(R.id.java_island_map, supportMapFragment).commit();
  }
  supportMapFragment.getMapAsync(this);

希望它可以帮助你。


推荐阅读