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 であることです。上記のコードでは、場所の更新メソッドでテキスト ビューで緯度と経度を設定しているときに正常に動作しますが、必要な場合はcreateメソッドのテキストビューで同じ値を設定すると、null値が返されます.なぜわからないのですか.この問題を解決するのを手伝ってください.よろしくお願いします!

4

3 に答える 3

1

Oncreate メソッドの textview にテキストを設定すると、緯度と経度が初期化されないためです。更新時に初期化されます。

したがって、updatelocation() メソッドでテキストを設定する必要があります。

locationlistener は緯度と経度を更新するのに時間がかかるため、その間に oncreate メソッドが実行され、緯度と経度が更新されず、null のままになります。そのため、updatelocation にテキストを設定することをお勧めします。

それが役に立てば幸い!!

于 2013-07-31T08:46:31.037 に答える