2014-11-01 18 views
0

我有一個FragmentActivity,在那裏我已經成功地通過我的XML使用此代碼實現的谷歌地圖:GoogleMap在getMap()上引發空指針;

<fragment 
    android:id="@+id/googleMap" 
    android:name="com.google.android.gms.maps.MapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

但是,如果我嘗試初始化地圖,找到與此代碼一個人的位置:

GoogleMap googleMap; 
googleMap = ((SupportMapFragment)(getSupportFragmentManager().findFragmentById(R.id.googleMap))).getMap(); 

它正在拋出一個空指針異常,正如我從其他有關此錯誤的問題中所瞭解的那樣,在XML文件中創建映射時它不應該是一個初始化映射的問題。是的我已經使用

setContentView(R.layout.map); 

在我初始化地圖之前。

+0

單獨的地圖調用成多行。也許它只是片段,它是空的。 – 2014-11-01 11:14:30

+0

可能相關:http://developer.android.com/reference/com/google/android/gms/maps/SupportMapFragment.html#getMap() – stkent 2014-11-01 12:01:15

回答

1

您使用支持片段所以在您的XML文件中添加 這個Lin e In Fragment

class="com.google.android.gms.maps.SupportMapFragment" 

像belove。

<fragment 
    android:id="@+id/googleMap" 
    android:name="com.google.android.gms.maps.MapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
class="com.google.android.gms.maps.SupportMapFragment" 
/> 

,並把這個

googleMap = ((MapFragment) getFragmentManager().findFragmentById(
        R.id.googleMap)).getMap(); 
1

的錯誤是由於不正確的變量初始化嘗試改變你的代碼,如下圖所示,由於

private GoogleMap gMap; 
MapFragment googleMap; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_map_search); 
    googleMap= (MapFragment) getFragmentManager().findFragmentById(
      R.id.googleMap); 
      gMap= googleMap.getMap(); 
1

在您xml的你正在使用MapFragment.Change它 -

<fragment 
     android:id="@+id/mapfragment" 
     android:layout_width="wrap_content" 
     android:layout_height="200dp" 
     android:layout_alignParentTop="true" 
     android:layout_gravity="center_horizontal" 
     class="com.google.android.gms.maps.SupportMapFragment" /> 

爪哇 -

googleMap = ((SupportMapFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.mapfragment)).getMap();