【发布时间】:2015-06-16 12:23:49
【问题描述】:
我正在构建我的第一个多活动应用程序。我在 Activity1 中有一些由用户定义并保存到SharedPreferences 的地理坐标:
// these strings are used when saving the users' preferred location
private static final String POINT_LATITUDE_KEY = "POINT_LATITUDE_KEY";
private static final String POINT_LONGITUDE_KEY = "POINT_LONGITUDE_KEY";
private static final String TAG = "Activity1";
// actually saves the coordinates to the preferences
private void saveCoordinatesInPreferences(float latitude, float longitude) {
SharedPreferences prefs =
this.getSharedPreferences(getClass().getSimpleName(),
Context.MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = prefs.edit();
prefsEditor.putFloat(POINT_LATITUDE_KEY, latitude);
prefsEditor.putFloat(POINT_LONGITUDE_KEY, longitude);
//Log.i(TAG, "latitude is: " + latitude);
//Log.i(TAG, "longitude is: " + longitude);
prefsEditor.commit();
}
这些 SharedPreferences 坐标随后需要被 Activity2 使用。我无法找回它们。这是我为检索而编写的方法。我的变量latitude 没有写入log。
private static final String TAG = "Activity2";
protected void getLatLongPref() {
// adapted from http://mrbool.com/android-shared-preferences-managing-files-using-internal-external-storage/30508
// accessed April 10, 2015
SharedPreferences pref = getApplicationContext().getSharedPreferences("POINT_LATITUDE_KEY", MODE_PRIVATE);
float latitudeUser = pref.getFloat("POINT_LATITUDE_KEY", 0); // getting users chosen latitude
Log.i(TAG, "latitude is: " + latitudeUser);
}
你认为我做错了什么?
【问题讨论】:
-
尝试在您的两个活动中使用
this.getDefaultSharedPreferences()。另外,您的第一个代码 sn-p 中的POINT_LATITUDE_KEY字符串是什么?另外,请参阅here 了解如何查看实际放入 SharedPrefs 的内容(无需解析 xml)。 -
@JonasCz 啊抱歉,
POINT_LATITUDE_KEY和POINT_LONGITUDE_KEY是我定义的要添加到首选项的键。我已经编辑了我的问题 -
@JonasCz
this.getDefaultSharedPreferences()不可用,您链接中提到的 DDMS 文件夹为空
标签: java android android-activity sharedpreferences