0

作業中のプロジェクトがありましたが、今はレイアウトをアップグレードしたいと思いますが、フラグメント(前ハニカム)を追加しようとしています。私のDB、と私はNullPointerExceptionを取得しています:プロジェクトにフラグメントを追加した後のgetWritableDatabaseでNullPointerExceptionが発生しました

ERROR/AndroidRuntime(27294):  
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118) 
ERROR/AndroidRuntime(27294):  
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187) 

私はそれは私がデータベースのコンストラクタに送るよコンテキストとは何かを持っていると信じています。ここ

は私のクラスである:

public class ShowFragment extends ListFragment { 

ArrayList<String> results = new ArrayList<String>(); 
private SQLiteDatabase db; 
WorkTrackdb workdb = new WorkTrackdb(getActivity()); 
private ViewGroup mRootView; 


@Override 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Cursor c = getYears(); 
      //some code here 
} 


    Cursor getYears() { 
     db = workdb.getReadableDatabase(); 
     String years[] = {"year"}; 
     Cursor cursor = db.query(WorkTrackdb.TABLE_NAME, years, null, 
       null, null, null,"year DESC"); 
     return cursor; 
    } 

答えて

1

ではなくSQLiteDatabase.openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags)を使用してみてください。私は多分あなたはonCreate()

+0

instantiate WorkTrackdb workdb = new WorkTrackdb(getActivity());する必要がわからない

は、それが働いたありがとう!私がしなければならなかったのは、OnCreate()の中でWorkTrackdbをインスタンス化することです。なぜ私がフラグメントに移動する前にOnCreate()の外で働くのか不思議です。 – idanakav

+0

アクティビティを開始する必要があるためです。その時点であなたは活動を止めるが、インスタンス化します。アクティビティを作成して渡す必要があります。 –

関連する問題