2013-09-29 3 views
-1

버튼 클릭으로 현재 위치를 객체에 설정하려고합니다. 그러나 버튼을 클릭하면 ANR 오류가 발생합니다. 이것은 내가 말하고있는 버튼의 onClick 메서드입니다. 여기서 destinationObj는 전역으로 선언되며 Location 유형입니다. 제발 도와주세요.[Android] 버튼을 클릭하면 현재 위치를 위치 객체에 설정하는 방법은 무엇입니까?

public void onClick(View v){ 

    double lat, lon; 
    lat=destinationObj.getLatitude(); 
    lon=destinationObj.getLongitude(); 
    destinationObj.setLatitude(lat); 
    destinationObj.setLongitude(lon); 


} 

및 로그 캣 :

09-29 10 : 44 : 02.456 : E가/AndroidRuntime (14,449) FATAL EXCEPTION : 메인 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : java.lang.IllegalStateException : 활동의 메서드를 실행할 수 없습니다. 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : android.view.View $ 1.onClick (View.java:3599) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : android.view.View.performClick (View.java:4204) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : at android.view.View $ PerformClick.run (View.ja) v/: 17355) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : android.os.Handler.handleCallback (Handler.java:725) 09-29 10 : 44 : 02.456 : E/AndroidRuntime 14449) : android.os.Handler.dispatchMessage (Handler.java:92) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : android.os.Looper.loop (Looper.java:137) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : android.app.ActivityThread.main (ActivityThread.java:5041) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : at (네이티브 메소드) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : java.lang.reflect.Method.invoke (Method.java:511)에서 09- 29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:793) 09-29 10:44:02 .456 : E/AndroidRuntime (14449) : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:560) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : at dalvik.system .NativeStart.main (네이티브 메서드) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : 원인 : java.lang.reflect.InvocationTargetException 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449)) : java.lang.reflect.Method.invokeNative (네이티브 메소드) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : java.lang.reflect.Method.invoke (Method.java:511) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : android.view.View $ 1.onClick (View.java:3594) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : ... 11 더 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : 원인 : java.lang.NullPointerException 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : com.example.user.MainActivity.onClick (MainActivity.java:130) 09-29 10 : 44 : 02.456 : E/AndroidRuntime (14449) : ... 14 자세히 09-29 10 : 44 : 04.088 : I/Process (14449) : 보내는 신호. PID : 14449 SIG : 9

+0

입니까? ur 코드의 완전한 구현을 제공합니다 .... –

+0

이것을 해결 했습니까? 원인 : java.lang.NullPointerException? – NormR

+0

아니요. 오류가 계속 발생합니다. – mkr231

답변

0

destinationObj.setLatitude (destinationObj.getLatitude()); 이건 말이 안 되니?

destinationObj는 setter와 getter에서 동일한 개체입니다. 왼쪽면은 TextView이거나 현재 위치를 말하고 싶은 곳이어야합니다.

당신의 setLatitude는 다음과 같이 구현되어있는 경우 : 계속 위도 변수를 설정, 루프를 입력합니다

this.latitude = getLatitude(); 

코드입니다.다음을 수행 http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/

가이드에서 :

시도하고이 가이드를 따르십시오 GPSTracker의 인스턴스에 다음

@Override public void onLocationChanged(Location location) { if ((this.location = location) == null) return; } 

는 호출 할 수 있습니다, GPS는 전화 :

gps.getLatitude(); 
gps.getLongitude(); 

GPS에서 수신 한 최신 위치 정보를 얻으려면 (GPS를 장치가 정착 될 때까지 같은 값)

당신이 정말로 위치 개체를해야하는 경우 다음 당신은 자신을 수완 구현할 수 있습니다 destinationObj 무엇

public class GPSTracker ... 
... 
    public Location getLastLocation() { 
     return this.location; 
    } 
} 
+0

나는 그것이 루프에 들어가는 것에 동의하며 어리석은 실수였다. 그러나 왼손 쪽은 단지 위치의 대상 일 수 있습니다. 위와 같이 코드를 수정해도 도움이되지 않습니다. getter와 setter는 지금 다르다. 업데이트 된 코드를 확인하고 가능한 경우 도와주십시오. – mkr231

+0

나는 아직도 당신이이 접근법에 잘못 접근하고 있다고 생각한다. 답변에 추가 한 가이드를 따르십시오. – cYrixmorten

+0

정말 도움이되지 않았습니다. 위치 클래스의 객체에 값을 어떻게 할당 할 수 있습니까? – mkr231

관련 문제