2012-05-02 6 views
2

일부 Android 코드에 문제가 있습니다. GeoPointLocation으로 변환하는 방법을 찾은 후에 this 질문이 나에게 답을주는 것 같지만 정보를 사용할 때 프로그램이 널 포인터 예외로 실패합니다.Geopoint를 위치로 변환 할 때 널 포인터 예외가 발생합니다.

내 코드 :

lat = 52.3725979; 
    longt = 4.8998594; 
    final GeoPoint geo_1 = new GeoPoint((int) (lat * 1E6),(int) (longt * 1E6)); 

    double latitude = geo_1.getLatitudeE6()/1E6; 
    double longitude = geo_1.getLongitudeE6()/1E6; 

    endLoc.setLatitude(latitude); 
    endLoc.setLongitude(longitude); 

라인 (171) 다음 endLoc 변수의

endLoc.setLatitude(latitude); 

초기화 :

public class VibroNavActivity extends Activity implements SensorListener{ 


final static String TAG = "VibroNavActivity"; 

//location variables 
GeoPoint startGeo; 
GeoPoint endGeo; 
Location loc = null; 
Location startLoc; 
Location endLoc; 
float totalDistance;//the distance between the startpoint end the endpoint 

로그 :

05-02 12:40:56.789: W/dalvikvm(27983): threadid=1: thread exiting with uncaught exception (group=0x40a4b1f8) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): FATAL EXCEPTION: main 
    05-02 12:40:56.800: E/AndroidRuntime(27983): java.lang.RuntimeException: Unable to start activity ComponentInfo{hcm.haska/hcm.haska.VibroNavActivity}: java.lang.NullPointerException 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at android.os.Handler.dispatchMessage(Handler.java:99) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at android.os.Looper.loop(Looper.java:137) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at android.app.ActivityThread.main(ActivityThread.java:4424) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at java.lang.reflect.Method.invokeNative(Native Method) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at java.lang.reflect.Method.invoke(Method.java:511) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at dalvik.system.NativeStart.main(Native Method) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): Caused by: java.lang.NullPointerException 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at hcm.haska.VibroNavActivity.onCreate(VibroNavActivity.java:171) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at android.app.Activity.performCreate(Activity.java:4465) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
    05-02 12:40:56.800: E/AndroidRuntime(27983): ... 11 more 
+0

VibronNavActivity.java의 171 행이 무엇인지 구체적으로 기술해야합니다. 추측해야한다면 endLoc.setLatitude (위도); – MikeIsrael

+0

온라인 171 endLoc은 NullPointerException을 던지고 있는데, 이는 거의 모든 것을 말합니다. endLoc을 어디에서 초기화합니까? –

+0

경고, 링크 된 게시물의 솔루션에 버그가 있습니다. float 또는 double로 나누어야합니다. –

답변

3

초기화하지 않고 endLoc 만 변수로 선언하고 있습니다.

당신의 생성자에서

, 또는 어딘가에 왕실 라인 (171) 전에 방법은 당신이 당신 만 endLoc를 선언 한 endLoc = new Location();

+0

고맙습니다. 문제는 실제로 초기화였습니다. 해결책 : endLoc = 새로운 위치 ("gps"); – user1321928

+0

@cjk 좋은 전화 :) –

0

필요라고하지만, 메모리는이 시점에서 할당되지 않습니다. 당신은 호출하여 메모리를 초기화해야합니다

endLoc = new Location(....) 
0

위치 생성자는 공급자 문자열을 필요로하지만 난이 빈 문자열이 될 수 있습니다 어딘가에 볼

loc = new Location(""); 

테스트 그 순간에,

관련 문제