我正在处理一个Android应用程序的问题。应用程序正常工作,直到我添加两行代码来获取用户的经度和经度。当我添加此代码时,我的应用程序崩溃没有明显的原因。这是带有getLatitude和getLongitude方法的代码。当我删除这两行时,应用程序工作正常。任何想法为什么会发生这种情况?
public class Car_mode extends Activity implements LocationListener {
private TextView latituteField;
private TextView longitudeField;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.carmode);
latituteField = (TextView) findViewById(R.id.TextView04);
longitudeField = (TextView) findViewById(R.id.TextView03);
LocationManager locationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location mostRecentLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double lat = mostRecentLocation.getLatitude();
double lng = mostRecentLocation.getLongitude();
latituteField.setText("test");
longitudeField.setText("test");
setButtonClickListener();
}
提前致谢。
以下是Logcat消息:
08-24 10:30:09.714: DEBUG/AndroidRuntime(281): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
08-24 10:30:09.714: DEBUG/AndroidRuntime(281): CheckJNI is ON
08-24 10:30:09.844: DEBUG/AndroidRuntime(281): --- registering native functions ---
08-24 10:30:10.344: DEBUG/AndroidRuntime(281): Shutting down VM
08-24 10:30:10.354: DEBUG/dalvikvm(281): Debugger has detached; object registry had 1 entries
08-24 10:30:10.354: INFO/AndroidRuntime(281): NOTE: attach of thread 'Binder Thread #3' failed
08-24 10:30:10.784: DEBUG/AndroidRuntime(289): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
08-24 10:30:10.784: DEBUG/AndroidRuntime(289): CheckJNI is ON
08-24 10:30:10.904: DEBUG/AndroidRuntime(289): --- registering native functions ---
08-24 10:30:11.414: INFO/ActivityManager(58): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.javoider.app/.main }
08-24 10:30:11.454: INFO/ActivityManager(58): Start proc com.javoider.app for activity com.javoider.app/.main: pid=295 uid=10036 gids={3003}
08-24 10:30:11.484: DEBUG/AndroidRuntime(289): Shutting down VM
08-24 10:30:11.484: DEBUG/dalvikvm(289): Debugger has detached; object registry had 1 entries
08-24 10:30:11.514: INFO/AndroidRuntime(289): NOTE: attach of thread 'Binder Thread #3' failed
08-24 10:30:12.404: INFO/ActivityManager(58): Displayed activity com.javoider.app/.main: 966 ms (total 592105 ms)
08-24 10:30:13.664: INFO/ActivityManager(58): Starting activity: Intent { act=android.intent.action.CARMODE cmp=com.javoider.app/.Car_mode }
08-24 10:30:13.763: DEBUG/AndroidRuntime(295): Shutting down VM
08-24 10:30:13.763: WARN/dalvikvm(295): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): FATAL EXCEPTION: main
08-24 10:30:13.774: ERROR/AndroidRuntime(295): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.javoider.app/com.javoider.app.Car_mode}: java.lang.NullPointerException
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at android.os.Handler.dispatchMessage(Handler.java:99)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at android.os.Looper.loop(Looper.java:123)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at java.lang.reflect.Method.invokeNative(Native Method)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at java.lang.reflect.Method.invoke(Method.java:521)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at dalvik.system.NativeStart.main(Native Method)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): Caused by: java.lang.NullPointerException
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at com.javoider.app.Car_mode.onCreate(Car_mode.java:38)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
08-24 10:30:13.774: ERROR/AndroidRuntime(295): ... 11 more
08-24 10:30:13.784: WARN/ActivityManager(58): Force finishing activity com.javoider.app/.Car_mode
08-24 10:30:13.784: WARN/ActivityManager(58): Force finishing activity com.javoider.app/.main
08-24 10:30:14.284: WARN/ActivityManager(58): Activity pause timeout for HistoryRecord{450a11e0 com.javoider.app/.Car_mode}
08-24 10:30:15.493: INFO/Process(295): Sending signal. PID: 295 SIG: 9
08-24 10:30:15.503: INFO/WindowManager(58): WIN DEATH: Window{45086398 com.javoider.app/com.javoider.app.main paused=true}
08-24 10:30:15.503: INFO/ActivityManager(58): Process com.javoider.app (pid 295) has died.
08-24 10:30:15.533: WARN/InputManagerService(58): Got RemoteException sending setActive(false) notification to pid 295 uid 10036
08-24 10:30:16.295: WARN/KeyCharacterMap(124): No keyboard for id 0
08-24 10:30:16.295: WARN/KeyCharacterMap(124): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
08-24 10:30:24.666: WARN/ActivityManager(58): Activity destroy timeout for HistoryRecord{4508dcf8 com.javoider.app/.main}
08-24 10:30:24.666: WARN/ActivityManager(58): Activity destroy timeout for HistoryRecord{450a11e0 com.javoider.app/.Car_mode}
答案 0 :(得分:2)
您必须在模拟器中修复您的GPS位置。请参阅this链接。
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
bestProvider = locationManager.getBestProvider(criteria,true);
Location location = locationManager.getLastKnownLocation(bestProvider);
double lat = location.getLatitude();
double lng = location.getLongitude();