A Map component in an app. This fragment is the simplest way to place a map in an application. It's a wrapper around a view of a map to automatically handle the necessary life cycle needs. Being a fragment, this component can be added to an activity's layout file simply with the XML below.
<fragment class="com.google.android.gms.maps.MapFragment" android:layout_width="match_parent" android:layout_height="match_parent"/>A
GoogleMapmust be acquired using
getMapAsync(OnMapReadyCallback). This class automatically initializes the maps system and the view.
A view can be removed when the MapFragment's
onDestroyView() method is called and the
useViewLifecycleInFragment(boolean) option is set. When this happens
the MapFragment is no longer valid until the view is recreated again later when MapFragment's
onCreateView(LayoutInflater, ViewGroup, Bundle) method is called.
Any objects obtained from the
GoogleMap is associated with the view. It's important to
not hold on to objects (e.g.
Marker) beyond the
view's life. Otherwise it will cause a memory leak as the view cannot be released.
Use this class only if you are targeting API 12 and above. Otherwise, use SupportMapFragment.
For more information, read the Google Maps Android API v2 developer guide.
Inherited Constant Summary
Public Constructor Summary
Public Method Summary
public MapFragment ()
Creates a map fragment. This constructor is public only for use by an inflater. Use
newInstance() to create a MapFragment programmatically.
public final GoogleMap getMap ()
Gets the underlying GoogleMap that is tied to the view wrapped by this fragment.
- the GoogleMap. Null if the view of the fragment is not yet ready. This can happen if
the fragment lifecyle have not gone through
onCreateView(LayoutInflater, ViewGroup, Bundle)yet. This can also happen if Google Play services is not available. If Google Play services becomes available afterwards and the fragment have gone through
onCreateView(LayoutInflater, ViewGroup, Bundle), calling this method again will initialize and return the GoogleMap.
public void getMapAsync (OnMapReadyCallback callback)
Sets a callback object which will be triggered when the
GoogleMap instance is ready
to be used.
- This method must be called from the main thread.
- The callback will be executed in the main thread.
- In the case where Google Play services is not installed on the user's device, the callback will not be triggered until the user installs it.
- In the rare case where the GoogleMap is destroyed immediately after creation, the callback is not triggered.
GoogleMapobject provided by the callback is non-null.
|callback||The callback object that will be triggered when the map is ready to be used.|
public static MapFragment newInstance ()
Creates a map fragment, using default options.
public static MapFragment newInstance (GoogleMapOptions options)
Creates a map fragment with the given options.
public void onActivityCreated (Bundle savedInstanceState)
public void onAttach (Activity activity)
public void onCreate (Bundle savedInstanceState)
public void onDestroy ()
public void onDestroyView ()
public void onInflate (Activity activity, AttributeSet attrs, Bundle savedInstanceState)
Parse attributes during inflation from a view hierarchy into the arguments we handle.
public void onLowMemory ()
public void onPause ()
public void onResume ()
public void onSaveInstanceState (Bundle outState)
Note that storing custom
Parcelable objects directly in the provided Bundle will
ClassNotFoundException. This is due to the fact that this Bundle is parceled
(thus losing its attached ClassLoader) and unparceled later in a different ClassLoader.
A workaround to this issue is to store custom
Parcelable objects in another
Bundle object before putting them in the provided
However, note that it is safe to store
Parcelable objects from the Maps API (e.g.
MarkerOptions, LatLng, etc.) directly in the provided Bundle.