无法从另一个类加载加载已保存的Preferences()

时间:2014-12-18 17:48:55

标签: android class sharedpreferences

我有一个A类扩展Activity,我有以下方法:

public void loadSavedPreferences() {
    System.out.println("Test");
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        System.out.println("Test2");
        boolean checkBoxValueb = sharedPreferences.getBoolean("CheckBox_Valueb", false);
        boolean checkBoxValuew = sharedPreferences.getBoolean("CheckBox_Valuew", false);
        boolean checkBoxValuen = sharedPreferences.getBoolean("CheckBox_Valuen", false);

        if (checkBoxValueb) {
            View background = findViewById(R.id.background);
            background.setBackgroundResource(R.drawable.bgb);
            setTheme(R.style.BlackTheme);
        } else if{....

}

现在我想在B类中使用这个方法(也扩展了Activity)

public A test = new A()

后:

test.loadSavedPreferences()

它启动了方法,因为我在LogCat中看到了“Test”。但是我加载了SharedPreferences失败了。我使用什么上下文无关紧要(getapplicationcontext(),this,A.class)

1 个答案:

答案 0 :(得分:0)

您无法实例化Activity类(在另一个活动中,但通常在任何地方)。

相反,在活动B中实例化SharedPreferences的方式与调用活动A中的方法相同:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);

然后,拨打

boolean checkBoxValueb = sharedPreferences.getBoolean("CheckBox_Valueb", false);
boolean checkBoxValuew = sharedPreferences.getBoolean("CheckBox_Valuew", false);
boolean checkBoxValuen = sharedPreferences.getBoolean("CheckBox_Valuen", false);

会给你相同的价值。

基本上,将相同的代码(整个方法)复制到另一个Activity。


顺便说一下,A.class不是Context,而是Class的类型。