MapFragment或MapView getMap()在棒棒糖上返回null

我一直在Android 4.x版本上使用Google Maps API v2很长时间,没有任何问题。 现在,我安装了最新的棒棒糖build立在我的Nexus设备(5和7),试图实现应用程序。

我想指出,KitKiat上的一切都是正确的,我所描述的问题只是在棒棒糖上popup。

在我的XML源代码中,我使用了MapFragment(Google Play服务库版本6.1.11)。

<fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.MapFragment"/> 

在Java代码中,我重写了OnPause()方法以达到映射:

 GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

在这一行它抛出NullPointerException。 在debugging器中,应用程序能够find片段,但是无法返回GoogleMap。 我也试图使用MapView。 它也抛出null。 对我来说最奇怪的是,地图加载没有在应用程序本身的问题,但在代码我不能达到它的工作。

  • Fragment中的MapFragment,替代方案?
  • Google Maps Utility:如何从ClusterManager获取所有标记<?>?
  • 检查经度和纬度是否在一个圆圈内
  • 如何在Android Map Fragment中禁用地图旋转function
  • Google Maps API v2 Android将形状绘制为标记
  • 谷歌地图API中的标记的GIFtypes的animationANDROID
  • Android谷歌地图透明度
  • 在Google地图v2上制作animation标记
  • 我有完全相同的问题,但是这对我来说是有效的:

    replace这个…

    GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

    有了这个…

    GoogleMap map = getMapFragment().getMap();

    然后把这个坏男孩扔进去,给它一个旋转。

     private MapFragment getMapFragment() { FragmentManager fm = null; Log.d(TAG, "sdk: " + Build.VERSION.SDK_INT); Log.d(TAG, "release: " + Build.VERSION.RELEASE); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { Log.d(TAG, "using getFragmentManager"); fm = getFragmentManager(); } else { Log.d(TAG, "using getChildFragmentManager"); fm = getChildFragmentManager(); } return (MapFragment) fm.findFragmentById(R.id.map); } 

    Google现在使用以下方法提供了一种更方便的方式来获取地图

      myMapFragment.getMapAsync(new OnMapReadyCallback) { @Override public void onMapReady(GoogleMap googleMap) { myMap = googleMap; } }); 

    看起来这可能是21的targetSdkVersion的问题: https : //code.google.com/p/android-developer-preview/issues/detail? id = 1947

    但是,切换到getChildFragmentManager()为我工作:

    supportMapFragment的findFragmentById在Android Studio中返回null

    你有没有尝试过isGooglePlayServicesAvailable来检查为什么它返回null? null在getmap上有很多原因,试着用这个来检查为什么给null