如何初始化我们无法从getApplicationContext()获取上下文的上下文?

时间:2015-09-22 09:46:12

标签: android android-context

我想访问一个扩展SQLiteOpenHelper的类,以从java类中获取数据库的上下文。我需要传递应用程序上下文来获取它,但不能访问getApplicationContext()。

如何在非活动的java类中获取应用程序上下文?

2 个答案:

答案 0 :(得分:4)

我建议你创建一个具有Context类型参数的构造函数。

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
    // Variables
    private Context ctx;

    public MySQLiteOpenHelper(Context ctx) {
        this.ctx = ctx;
    }

    //More code
}

现在,在您的活动中,您可以这样做:

MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this);

在你的片段中,你可以这样做:

MySQLiteOpenHelper helper = new MySQLiteOpenHelper(getActivity().getApplicationContext()); //getActivity() would work too, Activity (indirectly) extends Context.

答案 1 :(得分:0)

您可以创建自定义Application类和write方法getContext()。

像这样:

public class MyApplication extends Application {

    private static MyApplication mCurrentInstance;

    @Override
    public void onCreate() {
        super.onCreate();

        mCurrentInstance = this;
    }


    public static MyApplication instance() {
        return mCurrentInstance;
    }

    public static Context context() {
        return mCurrentInstance.getApplicationContext();
    }
}

将此类添加到manifest:

<application
        android:name=".MyApplication">