【发布时间】:2014-05-20 19:49:14
【问题描述】:
我正在使用 Google Location Api 获取位置并收听位置变化。但是如果我在 SharedPreferences 中发送这些位置值,我的应用程序就会崩溃。我的错误是什么?
我想让每个位置更改触发我的 SharedPreferences 值更新。
挖掘 FragmentActivity 类
SessionManagement s = new SessionManagement(this);
@Override
public void onLocationChanged(Location location) {
Log.d("deneme","Your position : " + location.getLatitude()+" " + location.getLongitude());
s.setLatitude(String.valueOf(location.getLongitude()));
}
还有我的会话管理类
public class SessionManagement {
static Activity activity;
public SessionManagement(Activity act){
activity = act;
}
public void setLatitude(String x){
SharedPreferences sp = activity.getSharedPreferences("sp", 0);
SharedPreferences.Editor spEditor = sp.edit();
spEditor.putString("latitude", x);
spEditor.commit();
m_latitude = x;
}
我收到了这些错误
05-20 22:45:23.090: E/AndroidRuntime(9931): FATAL EXCEPTION: main
05-20 22:45:23.090: E/AndroidRuntime(9931): java.lang.NullPointerException
05-20 22:45:23.090: E/AndroidRuntime(9931): at com.yuvety.widget.SessionManagement.setLatitude(SessionManagement.java:70)
05-20 22:45:23.090: E/AndroidRuntime(9931): at com.yuvety.main.Pager.onLocationChanged(Pager.java:194)
05-20 22:45:23.090: E/AndroidRuntime(9931): at com.google.android.gms.internal.gm$a.handleMessage(Unknown Source)
05-20 22:45:23.090: E/AndroidRuntime(9931): at android.os.Handler.dispatchMessage(Handler.java:99)
05-20 22:45:23.090: E/AndroidRuntime(9931): at android.os.Looper.loop(Looper.java:176)
05-20 22:45:23.090: E/AndroidRuntime(9931): at android.app.ActivityThread.main(ActivityThread.java:5419)
05-20 22:45:23.090: E/AndroidRuntime(9931): at java.lang.reflect.Method.invokeNative(Native Method)
05-20 22:45:23.090: E/AndroidRuntime(9931): at java.lang.reflect.Method.invoke(Method.java:525)
05-20 22:45:23.090: E/AndroidRuntime(9931): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
05-20 22:45:23.090: E/AndroidRuntime(9931): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
05-20 22:45:23.090: E/AndroidRuntime(9931): at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
您确定
activity不为空吗?我敢打赌是 -
是的,我很确定,因为我看到了 Logcat 的价值。
-
SessionManagement的第 70 行是什么? -
这一行:SharedPreferences sp = activity.getSharedPreferences("sp", 0);
-
是的,所以活动是空的,就像我说的那样
标签: android sharedpreferences google-api-java-client