片段内的Android SupportMapFragment

我试图在片段内使用SupportMapFragment。 在第一次启动时,地图显示没有任何错误。

但是,当我执行一个事务到另一个片段,然后返回到地图,我有一个错误膨胀片段。 但是当我创建包含地图的片段的新实例时,我没有任何错误。

这是我的布局:

    

而我instanciate我的SupportMapFragment在onCreateView像这样:

  //Instantiate the map fragment mHolder.supportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map); 

我在onActivityCreated中调用MapReady:

 if (mHolder.supportMapFragment != null) mHolder.supportMapFragment.getMapAsync(this); 

错误日志:

  FATAL EXCEPTION: main Process: xxx.xxxx.xxxx, PID: 4441 android.view.InflateException: Binary XML file line #8: Error inflating class fragment at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763) at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60) at android.view.LayoutInflater.inflate(LayoutInflater.java:414) at xxx.xxxx.xxxx.ui.HomeMapFragment.onCreateView(HomeMapFragment.java:234) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:971) at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1670) at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:586) at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:189) at com.tapptic.collecto.ui.HomeActivity.onBackPressed(HomeActivity.java:71) 

我知道,在一个片段的布局中硬编码片段不是一件好事,但我已经尝试使用frameLayout来执行此操作,但是我得到了更多的错误

如果你想在地图片段,你需要使用MapView而不是SupportMapFragment 如何使用谷歌地图V2在Android的MapView?

2017年作品(Kotlin):

 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val mapFragment = childFragmentManager.findFragmentById((R.id.map)) as SupportMapFragment mapFragment.getMapAsync(this) }