-1

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
...
}

数据库处理程序.java

public class DatabaseHandler extends SQLiteOpenHelper {
public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

VPAdapter.java想在DatabaseHandler任何地方访问,但是构造函数有问题。我应该写它们的正确方法是什么?

4

2 回答 2

1

您不能传递未初始化的变量。在函数的第二行,您声明了上下文变量,但没有为其分配任何值。

最后一行应该写在VPAdapter. 构造函数应该得到一个上下文变量。当您调用构造函数时,您可能希望使用应用程序上下文,但您可能还会发送一个活动(活动从上下文继承),但这通常不推荐(但这实际上取决于您的代码)

于 2012-11-07T09:15:02.990 回答
0

因为您的 Context 为空,所以首先初始化您的上下文,然后您可以将该上下文传递给您的数据库处理程序构造函数。

Context context = getApplicationContext();

或者试试下面的代码

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

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

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

而不是将该上下文传递给您的数据库处理程序。

于 2012-11-07T09:22:57.480 回答