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); 


} 

и LogCat:

09-29 10: 44: 02,456: Е/AndroidRuntime (14449): неустранимые: Основной 09-29 10: 44: 02,456: Е/AndroidRuntime (14449): java.lang.IllegalStateException: Не удалось выполнить способ действия 09-29 10: 44: 02.456: E/AndroidRuntime (14449): at android.view.View $ 1.onClick (View.java:3599) 09-29 10: 44: 02.456: E/AndroidRuntime (14449): at android.view.View.performClick (View.java:4204) 09-29 10: 44: 02.456: E/AndroidRuntime (14449): at android.view.View $ PerformClick.run (View.ja va: 17355) 09-29 10: 44: 02.456: E/AndroidRuntime (14449): at android.os.Handler.handleCallback (Handler.java:725) 09-29 10: 44: 02.456: E/AndroidRuntime (14449): at android.os.Handler.dispatchMessage (Handler.java:92) 09-29 10: 44: 02.456: E/AndroidRuntime (14449): at android.os.Looper.loop (Looper.java:137) 09-29 10: 44: 02.456: E/AndroidRuntime (14449): at android.app.ActivityThread.main (ActivityThread.java:5041) 09-29 10: 44: 02.456: E/AndroidRuntime (14449): at java.lang.reflect.Method.invokeNative (собственный метод) 09-29 10: 44: 02.456: E/AndroidRuntime (14449): at java.lang.reflect.Method.invoke (Method.java:511) 09- 29 10: 44: 02.456: E/AndroidRuntime (14449): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:793) 09-29 10:44:02 .456: E/AndroidRuntime (14449): at 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)): at java.lang.reflect.Method.invokeNative (собственный метод) 09-29 10: 44: 02.456: E/AndroidRuntime (14449): at 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): at 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

что destinationObj? дать полную реализацию кода ур .... –

+0

Вы разрешили это: вызвано: java.lang.NullPointerException? – NormR

+0

Нет. Все еще получаю сообщение об ошибке. – mkr231

ответ

0

destinationObj.setLatitude (destinationObj.getLatitude()); это не имеет никакого смысла?

destinationObj - тот же объект как для сеттера, так и для геттера. Левая сторона должна быть TextView или тем, что вы хотите сообщить текущему местоположению.

если ваш setLatitude реализуется как:

this.latitude = getLatitude(); 

Код будет ввести цикл, непрерывно устанавливая переменную широты.

Пожалуйста, попытайтесь следовать этому руководству: http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/

В руководстве сделайте следующее:

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

Затем на вашем экземпляре GPSTracker, позволяет называть его, GPS, звоните:

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

Чтобы получить последнее полученное местоположение от GPS (уведомление будет читать одни и те же значения, пока устройство GPS не урегулированные)

Если вам действительно нужен объект Расположение, то вы можете реализовать себя добытчика:

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

Я согласен, что он попадает в цикл, и это была глупая ошибка. Но левая сторона может быть только объектом местоположения. Но изменение кода, как указано выше, тоже не помогает. однако геттер и сеттер отличаются друг от друга. Пожалуйста, проверьте обновленный код и помогите мне, если сможете. – mkr231

+0

Я все еще думаю, что вы приближаетесь к этому неправильно. пожалуйста, следуйте руководству, которое я добавил к ответу. – cYrixmorten

+0

Это не помогло. Как вы можете присвоить значение объекту класса Location? – mkr231

Смежные вопросы