【发布时间】:2017-09-30 21:37:09
【问题描述】:
我正在构建一个 AAR 库。由于我的图书馆中有一个复杂的设置。我希望帮助使用这个库的用户可以轻松地设置/记住他们的设置。因此,我尝试让我的 AAR 库来管理用户的 sharedPreference。
例如,这里是我的项目的结构
AppAAA (dependent on LibBBB)
| - MainActivity
LibBBB
| - LibSetting
| - LibSettingFragment
| - LibSettingActivity
| - ... - preferences.xml
我尝试实现类似:
public class LibSetting() {
static final String KEY_SERVER_PORT = "PREF_KEY_SERVER_PORT";
SharedPreferences pref;
Context context;
public LibSetting(Context context) {
this.context = context;
this.pref = ((Activity)context).getPreferences(Context.MODE_PRIVATE);
}
public int getServerPort() {
return pref.getInt("PREF_KEY_SERVER_PORT", 50005);
}
public void showSettingActivity() {
Intent i = new Intent(context.getApplicationContext(), LibSettingActivity.class);
context.startActivity(i);
}
}
LibSettingActivity 和 LibSettingFragment 的实现是微不足道的。我基本上只是调用“addPreferencesFromResource(R.xml.preferences);”加载我的偏好设置(注意:我在 xml 中使用相同的密钥 PREF_KEY_SERVER_PORT)。
但是,它不起作用。 LibSettingFragment 设置的首选项完全不会传播到 pref.getXXX() 加载的首选项;
我的猜测是因为 LibSettingFragment 无法知道我想从“应用程序的上下文”而不是 lib 的上下文设置首选项。我该怎么做?
【问题讨论】:
标签: android sharedpreferences android-context aar