我正在尝试在Android中编写代码以从父类获取SharedPrefrences
的上下文而不扩展到超类。
我的代码:
public class TestClass
{
static Context mContext; //class variable
TestClass(Context context)
{
mContext = context;
}
String text = null;
SharedPreferences pref = mContext.getApplicationContext().getSharedPreferences("Status", 0);
text = pref.getString("Number",null);
Log.d(" Text Result : ", text);
}
我在 getApplicationContext()中遇到错误,无法在TestClass中找到 getApplicationContext()。
请告诉我如何获取上下文,我将使用SharedPreferences
。
答案 0 :(得分:1)
如果这真的是你的代码,它根本无法工作。因为全局字段将在调用构造函数之前初始化。这就是
的原因SharedPreferences pref = mContext.getApplicationContext().getSharedPreferences("Status", 0);
在构造函数初始化mContext之前调用。
通过从派生自Context(Activity,Service ...)的类中传递mContext字段来初始化mContext字段后,在构造函数中初始化字段
public class TestClass
{
static Context mContext; //class variable
String text;
SharedPreferences pref;
TestClass(Context context)
{
mContext = context;
pref = mContext.getApplicationContext().getSharedPreferences("Status", 0);
text = pref.getString("Number",null);
Log.d(" Text Result : ", text);
}
}
在您的活动中调用此方法:
TestClass tc = new TestClass(this);
答案 1 :(得分:1)
首先,你不能这样做(无法获取上下文的应用程序上下文):
SharedPreferences pref = mContext.getApplicationContext().getSharedPreferences("Status", 0);
你应该像这样使用它:
SharedPreferences pref = mContext.getSharedPreferences("Status", 0);
在没有活动的情况下使用它没有任何意义吗?