java - 获取随机 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 执行此操作。
解决方案
您可以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);
希望它可以帮助你。
推荐阅读
- javascript - 当站点在 gh-pages 上时,granim.js 不会“看到”图像,而在本地呈现时它是可以的
- android - 意图不发送或接收整数值
- php - (Artisan)Tinker 不允许我从后端访问配置文件表
- c++ - 为什么当构造函数引用字符串时不能正确打印?
- jquery - 更改为上个月时如何更改jquery datepicker的工具提示?
- ruby - 使用 Jekyll 时出现液态语法错误 - 意外字符
- dm-script - EFTEM 模式下 centerZLP 的 DM 脚本/命令
- css - NativeScript - 如何在应用程序的整个 scss 中使用 SASS 变量?
- firebase - 'firebase init' 给我一个离子项目的一般错误
- javascript - 在快速 ontouch IOS 期间跳过音频