Android 位置详细信息未保存在共享首选项中

Android 位置详细信息未保存在共享首选项中,android,sharedpreferences,Android,Sharedpreferences,我正在尝试获取用户的当前位置,并将这些值放入共享首选项中。但在将这些值放入共享引用时,我将获得NPE。如有任何帮助,将不胜感激。谢谢 我的代码:- SharedPreferences pref1=this.getSharedPreferences("LocDetails", Context.MODE_WORLD_READABLE); LocationManager locationManager= (LocationManager) getSystemService(Contex

我正在尝试获取用户的当前位置,并将这些值放入共享首选项中。但在将这些值放入共享引用时,我将获得NPE。如有任何帮助,将不胜感激。谢谢

我的代码:-

SharedPreferences pref1=this.getSharedPreferences("LocDetails", Context.MODE_WORLD_READABLE);
      LocationManager locationManager=   (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        LocationListener locationListener = new GetCurrentLocation();
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);


              }

              public void onLocationChanged(Location location) {
                latitude= location.getLatitude();
                longitude=location.getLongitude();

    SharedPreferences.Editor edit=pref1.edit();

                edit.putString("latitude", latitude);
                edit.putString("longitude", longitude);

                edit.commit();

           }
错误:-

04-24 01:22:14.644: E/AndroidRuntime(7088): java.lang.NullPointerException
04-24 01:22:14.644: E/AndroidRuntime(7088):     at com.sunmobileappnow.mobileappnow.GetCurrentLocation.onLocationChanged(GetCurrentLocation.java:47)
04-24 01:22:14.644: E/AndroidRuntime(7088):     at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:279)
04-24 01:22:14.644: E/AndroidRuntime(7088):     at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:208)
04-24 01:22:14.644: E/AndroidRuntime(7088):     at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:224)
04-24 01:22:14.644: E/AndroidRuntime(7088):     at android.os.Handler.dispatchMessage(Handler.java:102)
04-24 01:22:14.644: E/AndroidRuntime(7088):     at android.os.Looper.loop(Looper.java:137)
04-24 01:22:14.644: E/AndroidRuntime(7088):     at android.app.ActivityThread.main(ActivityThread.java:4998)
04-24 01:22:14.644: E/AndroidRuntime(7088):     at java.lang.reflect.Method.invokeNative(Native Method)
04-24 01:22:14.644: E/AndroidRuntime(7088):     at java.lang.reflect.Method.invoke(Method.java:515)
04-24 01:22:14.644: E/AndroidRuntime(7088):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
04-24 01:22:14.644: E/AndroidRuntime(7088):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
04-24 01:22:14.644: E/AndroidRuntime(7088):     at dalvik.system.NativeStart.main(Native Method)
GetCurrentLocation.java

public class GetCurrentLocation extends Activity implements LocationListener{
private SharedPreferences pref1;
private String latitude,longitude;
public double lat,Long;

      protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               pref1=this.getSharedPreferences("LocDetails", Context.MODE_WORLD_READABLE);   

   LocationManager locationManager=   (LocationManager) getSystemService(Context.LOCATION_SERVICE);
   LocationListener locationListener = new GetCurrentLocation();
   locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);


      }

      public void onLocationChanged(Location location) {
        lat= location.getLatitude();
        Long=location.getLongitude();

        latitude=String.valueOf(lat);
        longitude=String.valueOf(Long);


        SharedPreferences.Editor edit=pref1.edit();

        edit.putString("latitude", latitude);
        edit.putString("longitude", longitude);

        edit.commit();

   }


        public void onProviderDisabled(String provider) {

        }


        public void onProviderEnabled(String provider) {

        }


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

        }   

}

将实现的类传递给不创建新实例的方法

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
请尝试以下代码:-

private final LocationListener mLocationListener = new LocationListener() {
    @Override
    public void onLocationChanged(final Location location) {
        //your code here
    }
};
oncreate

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

    mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_REFRESH_TIME,
            LOCATION_REFRESH_DISTANCE, mLocationListener);
}
清单

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>


<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>


post GetCurrentLocation类..我想问题在于如何将值放入共享首选项中。首先将这些值转换为字符串,然后放入共享首选项中,或者使用putDouble或putFloat方法..我认为您没有得到lat和lon值,因此您得到的是空指针exception@Rod_Algonquin检查邮报。我已经添加了这个类。@JigarPandya我正在将lat-Long值转换成字符串,然后将它们转换成SharedReferences。
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>


<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>