1
我試圖找到我的座標並用此代碼在地圖片段中顯示它,但是我的應用崩潰了。我使用最新的GoogleMap API。使用GoogleMaps API的NULL指針
public class gmapp extends FragmentActivity{
// Google Map
private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
setUpIfNeeded();
}
private void setUpIfNeeded() {
if (googleMap == null)
{
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
if (googleMap != null)
{
setUpMap();
}
}
}
private void setUpMap() {
googleMap.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria , true);
Location myLocation = locationManager.getLastKnownLocation(provider);
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
double latitude = myLocation.getLatitude();
double longtitude = myLocation.getLongitude();
LatLng latLng = new LatLng(latitude , longtitude);
googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.animateCamera(CameraUpdateFactory.zoomTo(20));
googleMap.addMarker(new MarkerOptions().position(new LatLng(latitude , longtitude)).title("Im here"));
}
}
這裏是我的錯誤消息後,我編譯它。
09-12 20:10:01.034: E/AndroidRuntime(27507): FATAL EXCEPTION: main
09-12 20:10:01.034: E/AndroidRuntime(27507): Process: com.max.maxo, PID: 27507
09-12 20:10:01.034: E/AndroidRuntime(27507): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.max.maxo/com.max.maxo.gmapp}: java.lang.NullPointerException
09-12 20:10:01.034: E/AndroidRuntime(27507): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2394)
09-12 20:10:01.034: E/AndroidRuntime(27507): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2452)
09-12 20:10:01.034: E/AndroidRuntime(27507): at android.app.ActivityThread.access$900(ActivityThread.java:172)
09-12 20:10:01.034: E/AndroidRuntime(27507): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302)
09-12 20:10:01.034: E/AndroidRuntime(27507): at android.os.Handler.dispatchMessage(Handler.java:102)
09-12 20:10:01.034: E/AndroidRuntime(27507): at android.os.Looper.loop(Looper.java:136)
09-12 20:10:01.034: E/AndroidRuntime(27507): at android.app.ActivityThread.main(ActivityThread.java:5586)
09-12 20:10:01.034: E/AndroidRuntime(27507): at java.lang.reflect.Method.invokeNative(Native Method)
09-12 20:10:01.034: E/AndroidRuntime(27507): at java.lang.reflect.Method.invoke(Method.java:515)
09-12 20:10:01.034: E/AndroidRuntime(27507): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
09-12 20:10:01.034: E/AndroidRuntime(27507): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
09-12 20:10:01.034: E/AndroidRuntime(27507): at dalvik.system.NativeStart.main(Native Method)
09-12 20:10:01.034: E/AndroidRuntime(27507): Caused by: java.lang.NullPointerException
09-12 20:10:01.034: E/AndroidRuntime(27507): at com.max.maxo.gmapp.setUpIfNeeded(gmapp.java:35)
09-12 20:10:01.034: E/AndroidRuntime(27507): at com.max.maxo.gmapp.onCreate(gmapp.java:29)
09-12 20:10:01.034: E/AndroidRuntime(27507): at android.app.Activity.performCreate(Activity.java:5451)
09-12 20:10:01.034: E/AndroidRuntime(27507): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
09-12 20:10:01.034: E/AndroidRuntime(27507): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)
09-12 20:10:01.034: E/AndroidRuntime(27507): ... 11 more
在我的XML我只得到了片段地圖
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
'findFragmentById(R.id.map)'可能爲空,即它無法在您的佈局中找到您的片段。你有沒有在XML中正確地聲明它? – Blundell 2014-09-12 18:18:54
這是,添加到第一篇文章 – 2014-09-12 18:21:21
只是爲了確保地圖準備就緒,當你訪問它,我會做什麼建議[這裏](http://stackoverflow.com/questions/14047257/how-do-i -know-the-map-is-ready-get-used-when-using-the-supportmapfragment)(設置實際創建片段時的回調)。 – mbmc 2014-09-12 18:50:02