1

在我的应用程序中,我以编程方式使用谷歌地图,但是当我调用 getMap() 时,它返回 null。即使我尝试过 onActivityCreated() 但它仍然返回 null。有人请帮助我..这是我的代码,

public void callMap() {
        try {
            int status = GooglePlayServicesUtil
                    .isGooglePlayServicesAvailable(mActivity);
            if (status == ConnectionResult.SUCCESS) {
                Log.d("sreedhu", "Google Play Service Available");
                gmo = (new GoogleMapOptions()).zoomControlsEnabled(true)
                        .rotateGesturesEnabled(true);
                mapFragment = SupportMapFragment.newInstance(gmo);
                map=mapFragment.getMap();   
                manager=getFragmentManager();
                FragmentTransaction fragmentTransaction = manager
                .beginTransaction();
                fragmentTransaction.add(R.id.mapFragmentHole, mapFragment);
                fragmentTransaction.commit();           
                manager.executePendingTransactions();
                            mapFragment=getMap();
            } else if (GooglePlayServicesUtil.isUserRecoverableError(status)) {
                ErrorDialogFragment.newInstance(status).show(
                        getFragmentManager(), "errorDialog");
            } else {
                Toast.makeText(mActivity, "Google Map v2 not available",
                        Toast.LENGTH_LONG).show();
                mActivity.popFragments();
            }

        } catch (Exception e) {
            Log.d("sreedhu", "play" + e.toString());
        }



    }
4

2 回答 2

1

最后,我解决了这个问题......

我在 onCreateView 上包含以下片段,它解决了我的问题,

SupportMapFragment mFragment;
     mFragment = new SupportMapFragment() {
                @Override
                public void onActivityCreated(Bundle savedInstanceState) {
                    super.onActivityCreated(savedInstanceState);
                    if ((map = mFragment.getMap()) != null) {
                        setUpMap();
                    }
                }
            };

准备好地图后,将在此处调用 SuppotMapFragment 的 onActivityCreated,您可以设置地图。

于 2014-05-12T03:20:59.847 回答
1

executePendingTransactions 似乎不像您期望的那样工作。

从代码创建 MapFragment 时,在调用其 onCreateView 之前,您不会从中获取 GoogleMap。

您需要map=mapFragment.getMap();在 onStart 或 onResume 中调用它之后的所有代码。

于 2013-04-14T14:20:28.583 回答