2013-04-12 2 views
1

В моем приложении я использую google map программно, но когда я вызываю getMap(), он возвращает null. Даже я пробовал onActivityCreated(), но все равно возвращает null. кто-то пожалуйста, помогите мне .. Вот мой код,Google map v2 метод android getMap() возвращает 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()); 
     } 



    } 
+0

post ur logcat мощность ..! – TheFlash

+0

, так как я написал все под try catch, он показывает только исключение null-указателя. –

ответ

1

executePendingTransactions, похоже, не работает, как вы ожидаете.

Когда MapFragment создан из кода, вы не получите от него GoogleMap до тех пор, пока не вызывается его onCreateView.

Вам необходимо позвонить по номеру map=mapFragment.getMap(); и после этого ввести код в onStart или onResume.

+0

Я все еще получаю null. –

1

Наконец, я получил решение этой проблемы ...

я включаю это ниже кусок сниппета на onCreateView, который решал мою проблему,

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

После того как карта подготовлена ​​onActivityCreated в SuppotMapFragment своей воли вызывается там, вы можете настроить свою карту.