使用帮助程序构造函数的问题

时间:2012-11-07 09:05:56

标签: android constructor handler android-context sqliteopenhelper

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,但构造函数存在问题。我应该写它们的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您无法传递未初始化的变量。 在函数的第二行,您声明了上下文变量,但没有为其赋值。

最后一行应该写在VPAdapter的构造函数中。构造函数应该获取一个上下文变量。当你调用构造函数时,你可能想要使用应用程序上下文,但是你也可以发送一个活动(Activity继承自上下文),但通常不建议这样做(但这实际上取决于你的代码)

答案 1 :(得分:0)

因为Context是null,所以首先初始化上下文,而不是将该上下文传递给数据库处理程序构造函数。

Context context = getApplicationContext();

或尝试以下代码

例如,使用您的活动上下文初始化您的上下文。

创建APAdapter类的构造函数,并从您的活动中调用该构造函数。与为数据库处理程序创建的方式相同。

public APAdapter(Context context) {
this.context = context;
}

将该上下文传递给数据库处理程序。