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

DatabaseHandler.java

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

どこにでもVPAdapter.javaアクセスしたかったのですDatabaseHandlerが、コンストラクタに問題があります。私はそれらを書くべき適切な方法は何ですか?

4

2 に答える 2

1

初期化されていない変数を渡すことはできません。関数の2行目で、コンテキスト変数を宣言しますが、それに値を割り当てません。

最後の行は、のコンストラクターで記述する必要がありVPAdapterます。コンストラクターはコンテキスト変数を取得する必要があります。コンストラクターを呼び出すときは、おそらくアプリケーションコンテキストを使用する必要がありますが、アクティビティ(アクティビティはコンテキストから継承)も送信する場合がありますが、これは通常はお勧めしません(ただし、実際にはコードによって異なります)

于 2012-11-07T09:15:02.990 に答える
0

Context は null であるため、まずコンテキストを初期化してから、そのコンテキストをデータベース ハンドラー コンストラクターに渡すことができます。

Context context = getApplicationContext();

または、以下のコードを試してください

たとえば、コンテキストをアクティビティ コンテキストで初期化します。

APAdapter クラスのコンストラクターを作成し、そのコンストラクターをアクティビティから呼び出します。データベース ハンドラーの作成と同じ方法。

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

そのコンテキストをデータベース ハンドラーに渡すよりも。

于 2012-11-07T09:22:57.480 に答える