我想访问一个扩展SQLiteOpenHelper的类,以从java类中获取数据库的上下文。我需要传递应用程序上下文来获取它,但不能访问getApplicationContext()。
如何在非活动的java类中获取应用程序上下文?
答案 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">