Довольно очевидно - у меня есть 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);