【发布时间】:2018-05-17 16:58:01
【问题描述】:
我搜索了很长时间,但没有成功,因为我仍然不知道为什么它不起作用。
我已经在一个 Activity 和另一个 Activity 之间使用 SharedPreference
代码:
保存数据
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("email", email.getEmail().toString());
editor.apply();
检索数据
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String userEmail = preferences.getString("email", "defaultValue");
DisplayEmail.setText(userEmail);
此代码运行良好。但是现在,当转到另一个共享偏好时,会发生这种情况:
java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.nathan.application/com.example.nathan.application.ActCamera}:java.lang.IndexOutOfBoundsException:索引:0,大小:0 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2796) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2867) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1570) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:156) 在 android.app.ActivityThread.main(ActivityThread.java:6595) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832) 引起:java.lang.IndexOutOfBoundsException:索引:0,大小:0
由于这个错误导致的代码:
double Latitude = loc.getLatitude();
double Longitude = loc.getLatitude();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Country", details.doInBackground().toString());
editor.putLong("Latitude", Double.doubleToRawLongBits(Latitude));
editor.putLong("Longitude", Double.doubleToRawLongBits(Longitude));
editor.apply();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Latitude = Double.longBitsToDouble(preferences.getLong("Latitude", 0));
Longitude = Double.longBitsToDouble(preferences.getLong("Longitude", 0));
【问题讨论】:
-
为什么不使用自己的 sharedPref 文件?
-
类似这样的东西 -> stackoverflow.com/a/23024962/6142219
标签: java android sharedpreferences indexoutofboundsexception