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