我基本上是在使用我的 android 应用程序的位置进行测试。它目前所做的只是显示一些带有用户位置纬度和经度的 TextView。但是,我希望 LocationListener 在收到位置后停止接收更新,而不是继续侦听更新。
public void updateLocation(Location location, Geocoder geocoder){
TextView lat=(TextView)getView().findViewById(R.id.lat);
TextView longt=(TextView)getView().findViewById(R.id.longt);
double lata=location.getLatitude();
double longa=location.getLongitude();
lat.setText(Double.toString(location.getLatitude()));
longt.setText(Double.toString(location.getLongitude()));
}
public void FindLocation(Context context){
final LocationManager locationManager=(LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener(){
public void onLocationChanged(Location location){
updateLocation(location);}
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);
}
}
这应该在调用 updateLocation() 之后完成,但它不能引用 locationManager 或 locationListener。在将 updateLocation() 调用为“不能引用在不同方法中定义的内部类中的非最终变量 locationListener”之后,我也无法在 FindLocation() 中调用它。但是,将 final 添加到 locationListener 只会产生错误“locationListener 可能尚未初始化”。无论如何我可以做到这一点吗?