【问题标题】:Google map v2 android method getMap() returns null谷歌地图 v2 android 方法 getMap() 返回 null
【发布时间】:2013-04-12 08:54:25
【问题描述】:

在我的应用程序中,我以编程方式使用谷歌地图,但是当我调用 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());
        }



    }

【问题讨论】:

  • 发布你的 logcat 输出..!
  • 因为我在 try catch 下编写了所有内容,所以它只显示空指针异常。

标签: android android-fragments android-maps-v2


【解决方案1】:

executePendingTransactions 似乎不像你预期的那样工作。

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

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

【讨论】:

    【解决方案2】:

    终于,我解决了这个问题...

    我在 onCreateView 上包含了下面的 sn-p 片段,它解决了我的问题,

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

    一旦准备好地图,SuppotMapFragment 的 onActivityCreated 将在那里被调用,您可以设置地图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      相关资源
      最近更新 更多