如何在不扩展任何超类的情况下获取SharedPreferences的Context?

时间:2014-06-08 10:34:22

标签: android sharedpreferences android-context

我正在尝试在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

2 个答案:

答案 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);

在没有活动的情况下使用它没有任何意义吗?