首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在安卓系统中模拟PreferenceManager?

如何在安卓系统中模拟PreferenceManager?
EN

Stack Overflow用户
提问于 2010-07-27 01:58:56
回答 1查看 7.6K关注 0票数 17

我已经编写了一个使用Context、第三方库和来自PreferenceManagerSharedPreferences的类。

可以模拟Context,第三方库可以使用一些模拟框架模拟,但是如何使用PreferenceManager

我有两种方法:

代码语言:javascript
复制
public void saveString(ThirdPartyObject obj) {
    SharedPreferences appPreferences = 
        PreferenceManager.getDefaultSharedPreferences(mContext);
    SharedPreferences.Editor editor = appPreferences.edit();
    editor.putString(mContext.getString(
        R.string.preferences_string_name), obj.getString());
    editor.commit();
}

相应地,它加载首选项。

EN

回答 1

Stack Overflow用户

发布于 2016-02-06 12:47:20

您可以使用共享首选项的专用上下文。RenamingDelegatingContext将所有内容都委托给上下文。当我们从Context访问SharedPreference时,我们使用getSharedPreferences(String name, int mode)

在这里,通过扩展RenamingDelegatingContext,我们覆盖了getSharedPreferences,并用测试PREFIX来伪装name参数,因此当测试运行时,它将写入不同于主应用程序的首选文件。

代码语言:javascript
复制
public class SpecializedMockContext extends RenamingDelegatingContext {
    public static final String PREFIX = "test.";

    public SpecializedMockContext(Context context) {
        super(context, PREFIX);
    }

    @Override
    public SharedPreferences getSharedPreferences(String name, int mode) {
        return super.getSharedPreferences(PREFIX + name, mode);
    }
}

将此SpecialisedMockContext设置为您的测试应用程序上下文。setContext(specialisedMockContext)createApplication()

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3337558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档