0

我的代码面临一个小问题并因此而陷入困境。以下是我的代码:-

public class MainActivity extends Activity {
TextView textView1;
Location currentLocation;
double currentLatitude,currentLongitude;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView1 = (TextView) findViewById(R.id.textView1);

    findLocation();

    textView1.setText(String.valueOf(currentLatitude) + "\n"
            + String.valueOf(currentLongitude));

}

 public void findLocation() {

        LocationManager locationManager = (LocationManager) this
                .getSystemService(Context.LOCATION_SERVICE);

        LocationListener locationListener = new LocationListener() {

            public void onLocationChanged(Location location) {

                updateLocation(location,currentLatitude,currentLongitude);

                Toast.makeText(
                        MainActivity.this,
                        String.valueOf(currentLatitude) + "\n"
                                + String.valueOf(currentLongitude), 5000)
                        .show();

                }

            public void onStatusChanged(String provider, int status,
                    Bundle extras) {
            }

            public void onProviderEnabled(String provider) {
            }

            public void onProviderDisabled(String provider) {
            }
        };

        locationManager.requestLocationUpdates(
                LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

    }


    void updateLocation(Location location,double currentLatitude,double currentLongitude) {
            currentLocation = location;
            this.currentLatitude = currentLocation.getLatitude();
            this.currentLongitude = currentLocation.getLongitude();

        }
}

一切正常。但我的问题是类级别变量 currentLatitude 和 currentLongitude 的值为 null。在上面的代码中,当我在更新位置方法的文本视图中设置纬度和经度时,它工作正常但是当我想要在创建方法中的文本视图中设置相同的值它会给出空值。为什么我不知道。请帮助解决这个问题。提前致谢!

4

3 回答 3

1

这是因为当您在 Oncreate 方法中的 textview 中设置文本时,lat 和 long 未初始化。它会在更新时被初始化。

所以你应该在 updatelocation() 方法中设置文本。

locationlistener 需要一些时间来更新它的纬度和经度,以便同时执行您的 oncreate 方法,这样您的纬度和经度就不会更新并保持为空。所以最好在 updatelocation 上设置文本。

希望能帮助到你!!

于 2013-07-31T08:46:31.037 回答
0

我建议你把textView1.setText(String.valueOf(currentLatitude) + "\n" + String.valueOf(currentLongitude));这个updateLocation功能。

于 2013-07-31T08:48:23.767 回答
0

找到位置需要一些时间才能返回值。它异步发生,同时您的 UI 线程继续。

因此,在 中onCreate(),您还没有位置。调用的顺序无关紧要onCreate()

只有在调用您的方法时才能获得位置updateLocation(),并且无法保证与您的视图设置相关的时间。

因此,要修复,请在其中更新您的 textView 文本。

void updateLocation(Location location,double currentLatitude,double currentLongitude) {
    currentLocation = location;
    this.currentLatitude = currentLocation.getLatitude();
    this.currentLongitude = currentLocation.getLongitude();
    textView1.setText(String.valueOf(currentLatitude) + "\n"
        + String.valueOf(currentLongitude));
}
于 2013-07-31T08:49:51.980 回答