android MapView в fragmentе

Я хочу, чтобы MapView внутри моего Fragment

Это мой XML-файл FragmentLayout

      

Мой файл AndroidManifest.xml

                       

и мой class fragmentов

 public class ReportFragment extends Fragment implements LocationListener { MapView mapView = null; //eventually it is being read from view and assigned 

когда я запускаю приложение, я не вижу никакого вида карты в своем fragmentе

Из примера Джоша Холца на GitHub :

Вы должны добавить MapView в свой Layout например

   

и реализовать свой Fragment наподобие

 public class SomeFragment extends Fragment { MapView mapView; GoogleMap map; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.some_layout, container, false); // Gets the MapView from the XML layout and creates it mapView = (MapView) v.findViewById(R.id.mapview); mapView.onCreate(savedInstanceState); // Gets to GoogleMap from the MapView and does initialization stuff map = mapView.getMap(); map.getUiSettings().setMyLocationButtonEnabled(false); map.setMyLocationEnabled(true); // Needs to call MapsInitializer before doing any CameraUpdateFactory calls try { MapsInitializer.initialize(this.getActivity()); } catch (GooglePlayServicesNotAvailableException e) { e.printStackTrace(); } // Updates the location and zoom of the MapView CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(43.1, -87.9), 10); map.animateCamera(cameraUpdate); return v; } @Override public void onResume() { mapView.onResume(); super.onResume(); } @Override public void onDestroy() { super.onDestroy(); mapView.onDestroy(); } @Override public void onLowMemory() { super.onLowMemory(); mapView.onLowMemory(); } } 

Добавление к ответу MD:

Из документации :

GoogleMap должен быть приобретен с использованием getMapAsync (OnMapReadyCallback). MapView автоматически инициализирует систему карт и представление.

В соответствии с этим более правильным способом инициализации GoogleMap является использование getMapAsync .

Обратите внимание, что ваш class должен реализовать OnMapReadyCallback

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_map_page, container, false); mMapView = (MapView) v.findViewById(R.id.map_view); mMapView.onCreate(savedInstanceState); mMapView.getMapAsync(this); //this is important return v; } @Override public void onMapReady(GoogleMap googleMap) { mGoogleMap = googleMap; mGoogleMap.getUiSettings().setZoomControlsEnabled(true); mGoogleMap.addMarker(new MarkerOptions().position(/*some location*/)); mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(/*some location*/, 10)); } @Override public void onResume() { super.onResume(); mMapView.onResume(); } @Override public void onPause() { super.onPause(); mMapView.onPause(); } @Override public void onDestroy() { super.onDestroy(); mMapView.onDestroy(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mMapView.onSaveInstanceState(outState); } @Override public void onLowMemory() { super.onLowMemory(); mMapView.onLowMemory(); } 

В случае, если кто-то ищет версию MapView Fragment от Kotlin;)

 class MapViewKotlinFragment : Fragment(), OnMapReadyCallback { private var mMap: MapView? = null override fun onSaveInstanceState(outState: Bundle?) { super.onSaveInstanceState(outState) mMap?.onSaveInstanceState(outState) } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater?.inflate(R.layout.fragment_map, container, false) mMap = view?.findViewById(R.id.mapViewPlaces) as MapView mMap?.onCreate(savedInstanceState) mMap?.getMapAsync(this) return view } override fun onResume() { super.onResume() mMap?.onResume() } override fun onPause() { super.onPause() mMap?.onPause() } override fun onStart() { super.onStart() mMap?.onStart() } override fun onStop() { super.onStop() mMap?.onStop() } override fun onDestroy() { super.onDestroy() mMap?.onDestroy() } override fun onLowMemory() { super.onLowMemory() mMap?.onLowMemory() } override fun onMapReady(googleMap: GoogleMap) { googleMap.addMarker(MarkerOptions().position(LatLng(0.0, 0.0)).title("Marker")) } 
  • Android ClassNotFoundException
  • Ошибка приложения при попытке использовать RecyclerView на Android 5.0
  • NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder
  • Какая версия JDK (уровень языка) требуется для Android Studio?
  • ANDROID: анализ XML
  • Как получить широту и долготу мобильного устройства в Android?
  • прозрачный экран в java
  • Как проверить имя сертификата и псевдоним в файлах хранилища ключей?
  • Android Horizontal LinearLayout - Элементы обертки
  • Незарегистрированное исключение java.sql.SQLException; должны быть пойманы или объявлены брошенными?
  • Где получить строковый литерал «UTF-8» в Java?
  • Interesting Posts

    Передача параметров командной строки с помощью Visual Studio C #

    Как настроить Mac для маршрутизации внешних IP-запросов на разные интерфейсы?

    Заполнение каскадных выпадающих списков в JSP / Servlet

    Как установить локальный пакет NuGet .nupkg?

    Использование прокручиваемых результатов Hibernate для медленного чтения 90 миллионов записей

    Почему первый вызов WCF-клиента замедляется?

    Папка неверно работает на Windows 7

    Может ли папка Android Layout содержать подпапки?

    Что такое идентификатор клиента при отправке данных отслеживания в Google Analytics через протокол измерений?

    «Parallel.For» для Java?

    Странный эффект «сглаживания» в магазине приложений Windows 8

    Как сделать вывод любой команды оболочки без буфера?

    JFileChooser.showSaveDialog (…) – как установить предлагаемое имя файла

    Пользовательские сообщения об ошибках в сериализаторе Django Rest Framework

    Есть ли инструмент архива (который работает в Windows), который я могу установить «атрибут выполнения» в архиве или в zip-файле?

    Давайте будем гением компьютера.