myReverseGeocode не запускается. - PullRequest
       5

myReverseGeocode не запускается.

0 голосов
/ 04 сентября 2011

В коде ниже, когда я вызываю myReverseGeocode address = new myReverseGeocode (широта, долгота); , gpsData.append (address.temp); всегда показывать "ноль"

public HelloBlackBerryScreen() {
        super( MainScreen.VERTICAL_SCROLL | MainScreen.VERTICAL_SCROLLBAR );
        setTitle( "Get Address" );

        ButtonField buttonField_1 = new ButtonField( "Get GPS", ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT );
        add( buttonField_1 );
        buttonField_1.setChangeListener( new FieldChangeListener() {
            public void fieldChanged( Field arg0, int arg1 ) {
                Criteria c = new Criteria();                      

                try {
                    LocationProvider lp = LocationProvider.getInstance(c);
                    if( lp!=null )
                    {
                        lp.setLocationListener(new LocationListenerImpl(), 3, 1, 1);
                        myReverseGeocode address = new myReverseGeocode(latitude, longitude);

                        gpsData.append(address.temp);
                        myloc = gpsData.toString();
                    }



                } catch (LocationException le) {                        
                    ;
                }

myReverseGeocode.java


package mypackage;

import javax.microedition.location.AddressInfo;
import javax.microedition.location.Landmark;

import net.rim.device.api.lbs.Locator;
import net.rim.device.api.lbs.LocatorException;

public class myReverseGeocode {
    private Thread reverseGeocode;
    public AddressInfo addrInfo = null;
    String temp;

    public myReverseGeocode(final double lt, final double ln)
    {
         Runnable thread = new Runnable()
            {
                public void run()
                {

                    int latitude  = (int)(lt * 100000);
                    int longitude = (int)(ln * 100000);
                    try
                    {
                        Landmark[] results = Locator.reverseGeocode(latitude, longitude, Locator.ADDRESS );

                        if ( results != null && results.length > 0 )
                            temp = "inside if";
                        else
                            temp = "in else";
                    }
                    catch ( LocatorException lex )
                    {
                    }
                }
            };
        reverseGeocode = new Thread(thread);
        reverseGeocode.setPriority(Thread.MIN_PRIORITY);
        reverseGeocode.start();
    }

}

1 Ответ

0 голосов
/ 05 сентября 2011

Вы всегда получаете temp как null, потому что вы запрашиваете его почти сразу после запуска Thread (который запускается в конструкторе myReverseGeocode). Вам необходимо изменить дизайн myReverseGeocode, чтобы обновить пользовательский интерфейс экрана после получения фактического значения temp.

...