私はPoPyの答えで少し苦労しましたが、結局私はそれを管理しました。ここで私が思いついたのはこれです。おそらく、これはまた、この問題に出くわす他の人に役立ちます。
public class MyMapFragment extends Fragment {
private MapView mMapView;
private GoogleMap mMap;
private Bundle mBundle;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View inflatedView = inflater.inflate(R.layout.map_fragment, container, false);
try {
MapsInitializer.initialize(getActivity());
} catch (GooglePlayServicesNotAvailableException e) {
// TODO handle this situation
}
mMapView = (MapView) inflatedView.findViewById(R.id.map);
mMapView.onCreate(mBundle);
setUpMapIfNeeded(inflatedView);
return inflatedView;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBundle = savedInstanceState;
}
private void setUpMapIfNeeded(View inflatedView) {
if (mMap == null) {
mMap = ((MapView) inflatedView.findViewById(R.id.map)).getMap();
if (mMap != null) {
setUpMap();
}
}
}
private void setUpMap() {
mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
}
@Override
public void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
public void onPause() {
super.onPause();
mMapView.onPause();
}
@Override
public void onDestroy() {
mMapView.onDestroy();
super.onDestroy();
}
}
そしてここでは、対応するres/layout/map_fragment.xml
です:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.google.android.gms.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
あなたはRelativeLayout
を省略し(とのxmlnsがあなたの新しいまでdeclartion移動することができますルート要素、この場合はcom.google.android.gms.maps.MapView
)を作成します。
ある公式ドキュメントからMapsInitializer.initialize(コンテキスト)に関するいくつかの詳細は以下のとおりです。 [BitmapDescriptorFactory](http://developer.android .com/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html) [MapsInitializer](http://developer.android.com/reference/com/google/android/gms/maps/MapsInitializer。 html#initialize(android.content.Context)) – PoPy
私は既にMapオブジェクトを持っていますが、何らかの理由で例外がスローされます。私はこの静的で醜い呼び出しを追加したときに作業を終了しました。 – dnkoutso
@PoPy自分自身と同じ操作をしようとしています(viewPagerのmapViewを含む)が、mapViewの状態(マーカー、位置、ズームなど)を維持するにはどうしますか? 1ページ(地図付き)から3ページに行き、1ページに戻ると私の状態は失われます! –