【发布时间】:2012-04-11 12:36:15
【问题描述】:
我有一个 DialogView,它将设置存储在共享首选项中。它位于包A 中,我有另一个活动位于包B 中,它应该能够读取这些首选项。
所以我创建了一个包装类,它采用上下文和共享首选项名称并检索这些设置。第一次设置共享首选项时,一切正常,但是当我更改它时,我得到了相同的结果,这是第一次设置的。
问题是我在一个进程中保存了偏好,并且需要能够在另一个进程中读取它们。
所以看起来Context 已经改变了,我无法检索新的上下文。我应该怎么做才能获得最新的共享偏好?
提前谢谢你。
请看一下我的包装类
public class PhotoAppWidgetSettingsProxy extends Proxy {
private final static String PREFERENCES_NAME = PhotoAppWidgetSettingsProxy.class.getName();
private final static int PREFERENCES_MODE = Context.MODE_PRIVATE;
private Context mCtx = null;
private SharedPreferences pref = null;
private SharedPreferences.Editor editor = null;
public PhotoAppWidgetSettingsProxy(String name, Context context) {
super(name, context);
mCtx = context;
pref = context.getSharedPreferences(PREFERENCES_NAME, PREFERENCES_MODE);
editor = pref.edit();
}
private final static String FRAME = "FRAME";
/**
* Sets selected frame mode
* @param frame id
*/
public void setFrameMode(int frameId){
editor.putInt(FRAME, frameId);
Log.d(PREFERENCES_NAME, "SET MODE="+frameId);
boolean success = editor.commit();
Log.d(PREFERENCES_NAME, "SET MODE="+success);
}
/**
* Gets selected frame mode
* @return frame id
*/
public int getFrameMode(){
Log.d(PREFERENCES_NAME, "GET MODE="+pref.getInt(FRAME, 0));
return pref.getInt(FRAME, 0);
}
已解决:
private final static int PREFERENCES_MODE = Context.MODE_MULTI_PROCESS;
【问题讨论】:
-
它与上下文无关..可能是您没有正确设置值
-
我确实正确设置了值。提交返回真。当我尝试从同一个包中获取这些偏好时,我得到了最新的值。请在问题中查看我的包装类。刚刚附上。
-
“包”是什么意思?您是指两个不同的应用程序吗?
-
只是两个不同的 Java 包。
-
你是从同一个进程中读取设置吗?