【问题标题】:Android 4.2 getSupportFragmentManager().getMap() returns nullAndroid 4.2 getSupportFragmentManager().getMap() 返回 null
【发布时间】:2013-06-07 08:28:13
【问题描述】:

我在 Android 4.2 上遇到过这个问题。 我有三台设备,一台有 4.1.1,另外两台有 4.2。在 4.1 手机上 getSupportFragmentManager().getMap() 返回一个地图,我可以看到它,我可以找到我的位置等等。但在另外两个上它返回 null。

这是我的地图设置代码:

mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(false);
mMap.setOnMyLocationChangeListener(this);

在 4.2 中,最后三行中的每一行都抛出 NullPointerException。在 4.1 上,它们都可以工作。

我找不到,为什么会这样。

PS:Google 地图在 4.2 上运行良好。 “我的位置”按钮也可以使用。 PS2:在“访问我的位置”设置中,“GPS 卫星”和“Wi-Fi 和移动网络位置”是开启的。

【问题讨论】:

  • 您是否在设备上安装了 Google Play 服务?
  • 请访问此链接可能会有所帮助

标签: android android-maps supportmapfragment


【解决方案1】:

检查是否安装了 Google Play 服务。 并且您可能需要等待一段时间才能启动 Map 控制器。

mHandler = new Handler();
mHandler.post(new Runnable() {  
            @Override
            public void run() {
                GoogleMap map = getMap();
                if (map != null) {
                    map.setMyLocationEnabled(true);
                    // INIT HERE
                    map.getUiSettings().setMyLocationButtonEnabled(false);
                    // ...

                } else mHandler.post(this);
            }
        });

【讨论】:

  • 非常感谢。我已经安装了播放服务,并更新了谷歌应用程序。现在可以了!
【解决方案2】:

谷歌现在使用以下方法更方便地获取地图

myMapFragment.getMapAsync(new OnMapReadyCallback) {
     @Override
     public void onMapReady(GoogleMap googleMap) {
         myMap = googleMap;
         // Put your code here

     }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多