我正在使用viewPager,其中一个选项卡是列表视图,一个选项卡是Map。我定义的MapFragment如下:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
class="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
然后在onViewCreated函数中包含以下行:
val mapFragment = fragmentManager?.findFragmentById(map_fragment.id) as SupportMapFragment
此行引发错误:
android.widget.FrameLayout cannot be cast to com.google.android.gms.maps.SupportMapFragment
注意:我使用onViewCreated()函数是因为在onCreate()中,我在“ map_fragment”上得到了一个空指针。
“我的视图寻呼机”执行以下操作来创建片段:
MapViewFragment.newInstance(location, selection)
我对Google Play和地图也有正确的清单。
为什么我的片段变成了FrameLayout?这是预期的行为吗?
答案 0 :(得分:0)
我认为ViewPager不支持该片段。您必须使用
<com.google.android.gms.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/google_map_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".MapViewFragment"/>
然后您需要在onViewCreated()内部
mapView = rootView.findViewById(google_map_view.id) as MapView
mapView.getMapAsync(this)
//most important use onCreate;
mapView.onCreate(arguments)
显示地图。