2013-07-10 4 views
1

gps로 요청 위치에 대한 클래스를 만들었으므로이 클래스를 활동에 사용하여 경도와 위도를 요청할 수는 있지만 항상이 오류가 발생합니다. 그 이유는 알 수 없습니다.error gps requestLocationUpdates android

07-10 17:13:49.645: E/AndroidRuntime(10269): FATAL EXCEPTION: main 
07-10 17:13:49.645: E/AndroidRuntime(10269): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.provags/com.example.provags.MainActivity}: java.lang.NullPointerException 
07-10 17:13:49.645: E/AndroidRuntime(10269): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at android.os.Looper.loop(Looper.java:137) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at android.app.ActivityThread.main(ActivityThread.java:4424) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at java.lang.reflect.Method.invokeNative(Native Method) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at java.lang.reflect.Method.invoke(Method.java:511) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at dalvik.system.NativeStart.main(Native Method) 
07-10 17:13:49.645: E/AndroidRuntime(10269): Caused by: java.lang.NullPointerException 
07-10 17:13:49.645: E/AndroidRuntime(10269): at com.example.provags.Gps.getLocation(Gps.java:19) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at com.example.provags.Gps.<init>(Gps.java:16) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at com.example.provags.MainActivity.onCreate(MainActivity.java:16) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at android.app.Activity.performCreate(Activity.java:4465) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
07-10 17:13:49.645: E/AndroidRuntime(10269): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
07-10 17:13:49.645: E/AndroidRuntime(10269): ... 11 more 

GPS에 의한 위치 정보를 요청하는 방법이 ..

이런 로그 캣을했다. 그것은 모든 괜찮아 보이지만 그것은 작동하지 않습니다 :(

public class Gps implements LocationListener { 
Context myContext; 
Location posizione; 
double latitudine,longitudine; 
LocationManager locationManager; 
public Gps(Context c){ 
    myContext=c; 
    getLocation(); 
} 
public Location getLocation(){ 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
    if(locationManager!=null){ 
     posizione=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     if(posizione!=null){ 
      latitudine=posizione.getLatitude(); 
      longitudine=posizione.getLongitude(); 
     } 
    } 
    return posizione; 
} 

public double latitudine(){ 
    if(posizione!=null){ 
     latitudine=posizione.getLatitude(); 
    } 
    return latitudine; 
} 
public double longitudine(){ 
    if(posizione!=null){ 
     longitudine=posizione.getLongitude(); 
    } 
    return longitudine; 
} 
public void stopGps(){ 
    if (locationManager!=null){ 
     locationManager.removeUpdates(Gps.this); 
    } 
} 
@Override 
public void onLocationChanged(Location location) { 
    // TODO Auto-generated method stub 

} 
@Override 
public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 

} 
@Override 
public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 

} 
@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 

} 

} 

당신이 날 당신이 locationManager.requestLocationUpdates를 호출하기 전에 혹시을 locationManager를 초기화 마십시오

+0

빠른 질문 : 당신의 생성자에서 당신이 정의한'Selecsosi 말했듯이

if(locationManager!=null){ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 

은 또한 당신이 실제로 어딘가에 위치 관리자를 얻을 필요 getLocation();'그러나 getLocation() 함수는'Location'을 반환합니다. 맞습니까? Gps 생성자에서 'Location l = getLocation();'과 같지 않아야합니까? –

+1

오류가 발생하는 코드 행 (19 행) : com.example.provags.Gps.getLocation (Gps.java:19)에서 사용자를 가리 킵니다. 내 생각 엔 LocationManager가 null이라는 것입니다. – Jack

답변

1

을 ??? 제발 도와 드릴까요?에서

GPS 생성자 당신은 null의 경우 검사 THEN을 locationManager에 대한 작업을 수행하고있다

locationManager = (LocationManager)c.getSystemService(Context.LOCATION_SERVICE); 
+0

덕분에 문제가 해결되었습니다. – tafazzi87

0

을 시도 할 수 있습니다 :

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
    if(locationManager!=null){ 

문제는 locationManager가 null이라는 것입니다. 당신은 너무 같은 if 문 안에이 이동할 수 있습니다

locationManager = (LocationManager)c.getSystemService(Context.LOCATION_SERVICE); 
관련 문제