Android - Изменение ориентации Mapbox теряет ссылку на MapboxMap - PullRequest
0 голосов
/ 02 декабря 2018

Довольно очевидно - у меня есть MapboxMap во фрагменте видового экрана, и если экран поворачивается, я теряю ссылку на карту (т. Е. Map = null для любых дальнейших вызовов метода).Я реализовал все изменения состояния фрагмента до конца, включая OnDestroyView, так что не уверен, что случилось.Ниже приведен отрывок из моего MapFragment.java .

@Override
public void onAttach(Context context) {
    Log.i(TAG,"Attaching Map");
    super.onAttach(context);
    mContext = context;
    if (context instanceof OnFragmentInteractionListener) {
        mListener = (OnFragmentInteractionListener) context;
    } else {
        throw new RuntimeException(context.toString()
                + " must implement OnFragmentInteractionListener");
    }
}

@Override
public void onDetach() {
    Log.i(TAG,"Detaching Map");
    super.onDetach();
    mListener = null;
}

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
    return false;
}


/**
 * This interface must be implemented by activities that contain this
 * fragment to allow an interaction in this fragment to be communicated
 * to the activity and potentially other fragments contained in that
 * activity.
 * <p>
 * See the Android Training lesson <a href=
 * "http://developer.android.com/training/basics/fragments/communicating.html"
 * >Communicating with Other Fragments</a> for more information.
 */
public interface OnFragmentInteractionListener {
    // TODO: Update argument type and name
    void onFragmentInteraction(Uri uri);
}



@Override
public void onStart() {
    super.onStart();
    mMapView.onStart();
}

@Override
public void onResume() {
    super.onResume();
    mMapView.onResume();
}

@Override
public void onPause() {
    super.onPause();
    mMapView.onPause();
}

@Override
public void onStop() {
    Log.i(TAG,"Stopping Map");
    super.onStop();
    mMapView.onStop();
}

@Override
public void onLowMemory() {
    super.onLowMemory();
    mMapView.onLowMemory();
}

/*
@Override
public void onDestroy() {
    Log.i(TAG,"Destroying Map");
    super.onDestroy();
    //mMapView.onDestroy();
}
*/

@Override
public void onDestroyView() {
    super.onDestroyView();
    mMapView.onDestroy();
}

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

@Override
public void onActivityCreated(Bundle savedInstanceState){
    super.onActivityCreated(savedInstanceState);
    mMapView.onCreate(savedInstanceState);
...