принудительно закрывать, когда провайдер переходит на GPS_PROVIDER - PullRequest
0 голосов
/ 24 февраля 2012

я пытаюсь получить текущую координату и адреса с помощью NETWORK_PROVIDER в trhead, но когда я переключаюсь на GPS_PROVIDER, приложение принудительно закрывается: с сообщением из LogCat:

02-24 16: 54: 00.249: E / AndroidRuntime (3004): android.view.ViewRoot $ CalledFromWrongThreadException: только исходный поток, создавший иерархию представлений, может касаться его представлений.

Я думаю, какая разница, когда я просто меняюпровайдер из сети в GPS, как и раньше при использовании сети, приложение работает хорошо ..

это код для потока:

private void requestPosition()
    {
        if(!cekInternet())
        {
            Txt_konek.setText("Need internet Connection");
        }
        else
        {
            new Thread()
            {
                public void run()
                {
                    Message localMessage = Message.obtain();
                    localMessage.what=1;
                    try
                    {
                        Splash2.this.ll = Splash2.this.show_current_location();
                        Splash2.this.lat = Double.valueOf(Double.parseDouble(Splash2.this.ll.substring(0,Splash2.this.ll.indexOf(",")-1)));
                        Splash2.this.lng = Double.valueOf(Double.parseDouble(Splash2.this.ll.substring(1+Splash2.this.ll.indexOf(","))));
                        Splash2.this.posisiUser = Splash2.this.goToGeocoder(Splash2.this.lat.doubleValue(), Splash2.this.lng.doubleValue());
                        Splash2.this.messageHandler.sendMessage(localMessage);
                        return;
                    }
                    catch(Exception localException)
                    {
                        while(true)
                        {
                Splash2.this.Txt_konek.setText("no internet connection");                           
                        }
                    }
                }
            }
            .start();
        }
    }

этот метод для получения текущего местоположения:

private String show_current_location()
    {
        Location localLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if(localLocation==null)
        {               
            this.longLat = localLocation.getLatitude()+","+localLocation.getLongitude();
        }
        else
        {
            this.longLat = localLocation.getLatitude()+","+localLocation.getLongitude();
        }
        return this.longLat;
    }

и это locationListener:

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

Провайдеру GPS требуется время, чтобы получить исправление, и перед этим вы обрабатываете свой метод show_current_location, поэтому вы получаете сообщение об ошибке. Вам нужно подождать, пока вы не получите lat и lang

0 голосов
/ 24 февраля 2012

если ваше местоположение localLocation равно нулю, исключение пустого указателя будет выдано в

 localLocation.getLatitude()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...