2014-02-09 4 views
0

Я реализую Google Map V2 api и получаю текущее местоположение. Я использовал точно такой же код, как пример проект Google,Null Pointer Exception on get Map

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_add_map); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    setUpMapIfNeeded(); 
    setUpLocationClientIfNeeded(); 
    mLocationClient.connect(); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    if (mLocationClient != null) { 
     mLocationClient.disconnect(); 
    } 
} 

private void setUpMapIfNeeded() { 
    // Do a null check to confirm that we have not already instantiated the map. 
    if (mMap == null) { 
     // Try to obtain the map from the SupportMapFragment. 
     mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map_AddFragment)) 
       .getMap(); 
     // Check if we were successful in obtaining the map. 
     if (mMap != null) { 
      mMap.setMyLocationEnabled(true); 
      mMap.setOnMyLocationButtonClickListener(this); 
     } 
    } 
} 

Моей Компоновка:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"   
xmlns:tools="http://schemas.android.com/tools" 
xmlns:map="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<fragment 
    android:id="@+id/map_AddFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:name="com.google.android.gms.maps.MapFragment" 
    tools:ignore="MissingPrefix" /> 
</RelativeLayout> 

, когда я запускаю этот код из примера проекта он работает, но когда я скопировать этот код на мой проект, он дает мне Null pointer exception на линии mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map_AddHTag)) .getMap();

Я действительно не знаю, что происходит с тех пор, как он работал хорошо и все еще хорошо работает в проекте образца.

спасибо.

+0

Как вы добавляете «SupportMapFragment» к активности? – CommonsWare

+0

Попробуйте Project -> Clean. Если вы перемещаете вещи в своих XML-файлах, это обычно решает все. –

+0

@CommonsWare Спасибо, я обновил свой пост. Я также очистил проект, закрыл затмение и снова открыл его и все еще не работал – Copernic

ответ

2

Ну, вы должны быть разбиты с помощью ClassCastException. В вашем макете есть com.google.android.gms.maps.MapFragment, и вы пытаетесь применить его к SupportMapFragment, что не сработает. Если это FragmentActivity, вам нужно использовать SupportMapFragment в макете, а также с кодом Java.

+0

Вау! Вы абсолютно правы ! Я даже этого не заметил ... Спасибо вам большое! – Copernic