Карты Google Android: java.lang.ClassCastException: android.widget.FrameLayout нельзя привести к com.google.android.gms.maps.SupportMapFragment. - PullRequest
0 голосов
/ 20 марта 2019

Я использую viewPager, где одна вкладка представляет собой представление списка, а одна вкладка представляет собой карту. 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".

My View Pager делает следующее для создания фрагмента:

 MapViewFragment.newInstance(location, selection)

У меня есть правильные манифесты для Google Play и карт.

Почему мой фрагмент превращается в FrameLayout? Это ожидаемое поведение?

1 Ответ

0 голосов
/ 20 марта 2019

Я думаю, что этот фрагмент просто не поддерживается в 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)

, чтобы показать карту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...