VPAdapter.java
public class VPAdapter extends PagerAdapter
{
public static String[] titles;
public final Context context;
public int[] scrollPosition;
JSONArray categories = null;
JSONArray newstype = null;
JSONObject json;
DatabaseHandler db = new DatabaseHandler(context)//error:The blank final field context may not have been initialized
...
}
DatabaseHandler.java
public class DatabaseHandler extends SQLiteOpenHelper {
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
在VPAdapter.java
我希望在任何地方访问DatabaseHandler
,但构造函数存在问题。我应该写它们的正确方法是什么?
答案 0 :(得分:1)
您无法传递未初始化的变量。 在函数的第二行,您声明了上下文变量,但没有为其赋值。
最后一行应该写在VPAdapter
的构造函数中。构造函数应该获取一个上下文变量。当你调用构造函数时,你可能想要使用应用程序上下文,但是你也可以发送一个活动(Activity继承自上下文),但通常不建议这样做(但这实际上取决于你的代码)
答案 1 :(得分:0)
因为Context是null,所以首先初始化上下文,而不是将该上下文传递给数据库处理程序构造函数。
Context context = getApplicationContext();
或尝试以下代码
例如,使用您的活动上下文初始化您的上下文。
创建APAdapter类的构造函数,并从您的活动中调用该构造函数。与为数据库处理程序创建的方式相同。
public APAdapter(Context context) {
this.context = context;
}
将该上下文传递给数据库处理程序。