我正在使用 Google Maps v2,我想确定我的位置。我使用 Genymotion 模拟器。我需要在我的测试设备上激活 GPS。如果我在模拟器上进行测试,并且如果我尝试使用 LocationManager,它没有被激活“null”。我正在使用 Eclipse 的“DDMS”透视图将地理位置发送到模拟器。Window → Open Perspective → Other... → DDMS。但所有字段都不可点击。
我按照 Breadbin 所说的做了,但我仍然有空指针异常
`
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
map.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, true);
Location myLocation = locationManager.getLastKnownLocation(provider);
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
double latitude = myLocation.getLatitude();
double longitude = myLocation.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
map.moveCamera(CameraUpdateFactory.newLatLng(latLng));
map.animateCamera(CameraUpdateFactory.zoomTo(20));
map.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title("You are here"));
}`
11-20 04:28:48.056: D/dalvikvm(1645): GC_FOR_ALLOC 释放 226K,2% 释放 16823K/17076K,暂停 7ms,总共 7ms 11-20 04:28:48.332: D/dalvikvm(1645): GC_FOR_ALLOC 释放 309K,2% 释放 17029K/17364K,暂停 7ms,总共 7ms 11-20 04:28:48.412: D/dalvikvm(1645): GC_FOR_ALLOC 释放 260K,2% 释放 17282K/17568K,暂停 6ms,总共 6ms 11-20 04:28:48.496: D/dalvikvm(1645): GC_FOR_ALLOC 释放 109K,2% 释放 17546K/17784K,暂停 10ms,总共 10ms 11-20 04:28:48.540: D/dalvikvm(1645): GC_FOR_ALLOC 释放 28K,1% 释放 17906K/18084K,暂停 6ms,总共 6ms 11-20 04:28:48.540: D/AndroidRuntime(1645): 关闭 VM 11-20 04:28:48.540: W/dalvikvm(1645): threadid=1: 线程以未捕获的异常退出 (group=0xa4c49648) 11-20 04:28:48.544: E/AndroidRuntime(1645): 致命异常: main 11-20 04:28:48.544: E/AndroidRuntime(1645): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.Mymaps/com.example.Mymaps.MainActivity}: java.lang.NullPointerException 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread.access$600(ActivityThread.java:141) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.os.Handler.dispatchMessage(Handler.java:99) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.os.Looper.loop(Looper.java:137) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread.main(ActivityThread.java:5103) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 java.lang.reflect.Method.invokeNative(Native Method) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 java.lang.reflect.Method.invoke(Method.java:525) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 11-20 04:28:48.544: E/AndroidRuntime(1645): at dalvik.system.NativeStart.main(Native Method) 11-20 04:28:48.544:E/AndroidRuntime(1645):由:java.lang.NullPointerException 引起 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 com.example.Mymaps.MainActivity.onCreate(MainActivity.java:33) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.Activity.performCreate(Activity.java:5133) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 11-20 04:28:48.544: E/AndroidRuntime(1645): ... 11 更多 11-20 04:28:48.840: W/ActivityThread(1645): ClassLoader.loadClass: Thread.getContextClassLoader() 返回的类加载器对于托管多个应用程序的进程可能会失败。您应该明确指定上下文类加载器。例如:Thread.setContextClassLoader(getClass().getClassLoader()); 11-20 04:45:28.501: W/ActivityThread(3967): ClassLoader.loadClass: Thread.getContextClassLoader() 返回的类加载器对于托管多个应用程序的进程可能会失败。您应该明确指定上下文类加载器。例如:Thread.setContextClassLoader(getClass().getClassLoader());