我有一个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)
答案 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
的类型。