0

Fragment に GoogleMap を表示しています。画面を回転させるとマップがリロードされます。GoogleMaps アプリでマップがリロードされない (マップが消え、灰色の画面が再び表示される)

私のコード:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_map, container,
            false);

    mMapView = (MapView) v.findViewById(R.id.map);
    mMapView.onCreate(savedInstanceState);
    mMapView.onResume();

    if(savedInstanceState == null){
        try {
            MapsInitializer.initialize(getActivity().getApplicationContext());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    if(googleMap == null){
        googleMap = mMapView.getMap();

        //map settings
        googleMap.setMyLocationEnabled(true);
        googleMap.setIndoorEnabled(false);
        googleMap.setTrafficEnabled(false);
        googleMap.getUiSettings().setTiltGesturesEnabled(false);
        googleMap.getUiSettings().setMapToolbarEnabled(false);
    }

    if(savedInstanceState == null) {
        Location myLocation = getMyLocation();

        if (myLocation != null) {
            double myLatitude = myLocation.getLatitude();
            double myLongitude = myLocation.getLongitude();

            CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(myLatitude, myLongitude)).zoom(12).build();
            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        }
    }
    return v;
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    mMapView.onSaveInstanceState(outState);
}

// and ofcouse onResume, OnPause, OnCreated and onLowMemory

カメラの位置は保持されますが、マップは保持されません。再読み込みには時間がかかり、見栄えも悪くなります。Google マップ アプリのように地図が再読み込みされないようにするにはどうすればよいですか?

この質問を見てみましたが、向きの変更を禁止したくありません。

4

2 に答える 2

1

追加してみましたか

android:configChanges="orientation|screenSize"

マニフェストのアクティビティに?

必ずしも向きをロックするわけではなく、Android が構成の変更を自分で試行して処理できるようにします。

これが探しているものでない場合は、電話してみてください

setRetainInstanceState(true)

フラグメントを初期化した後、オリエンテーション後に再開されたときにデータをリコールしますが、オリエンテーションの変更により Android が強制的にアクティビティを破棄して再作成するため、Google マップは常にリロードする必要があります。

于 2015-10-20T15:26:13.580 に答える