猿问

在 onMapReady 回调中上下文为空

我正在编写一个 Android 应用程序。

在我的应用程序中,我在 MainActivity 中调度了 ACTION_IMAGE_CAPTURE 意图后立即调用了地图片段。


地图片段片段是:


public class MapFragment extends Fragment implements OnMapReadyCallback {

.

.

.

    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        // Inflate the layout for this fragment

        mView = inflater.inflate(R.layout.fragment_map, container, false);

        return mView;

    }


    @Override

    public void onViewCreated(View view, Bundle savedInstanceState) {

        super.onViewCreated(view, savedInstanceState);


        mMapView = mView.findViewById(R.id.map);

        if (mMapView != null) {

            mMapView.onCreate(null);

            mMapView.onResume();

            mMapView.getMapAsync(this);

        }

    }

.

.

.

    @Override

    public void onMapReady(GoogleMap googleMap) {


        MapsInitializer.initialize(getActivity());

        mMap = googleMap;

        mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);


    }

如果我不分派 ACTION_IMAGE_CAPTURE 意图,则片段按计划工作,但是,在分派意图时, MapsInitializer.initialize(getActivity()) 中的上下文为空


我认为我需要更好地同步 ACTION_IMAGE_CAPTURE 意图完成和 onMapReady 方法,但不确定如何。


任何帮助将不胜感激。


谢谢,


蝴蝶刀刀
浏览 82回答 1
1回答

慕田峪7331174

改成这样,        @Override        public void onViewCreated(View view, Bundle savedInstanceState) {            super.onViewCreated(view, savedInstanceState);            mMapView = mView.findViewById(R.id.map);           //initialize before calling map onCreate            MapsInitializer.initialize(getActivity());            if (mMapView != null) {                //instead of passing null its a good practice to use savedInstanceState                mMapView.onCreate(savedInstanceState);                mMapView.onResume();                mMapView.getMapAsync(this);            }        }
随时随地看视频慕课网APP

相关分类

Java
我要回答