2

У меня проблема с моей программой. Я использую базу данных для сохранения настроек моего приложения. Когда я сохраняю пароль в приложении, все в порядке, но когда я сохраняю имя «школьного класса», в принципе, тот же метод, но другая таблица сбой, и у меня есть эта ошибка:Android NullPointerException + GetDatabaseLocked

02-19 15:32:04.070: E/AndroidRuntime(14349): FATAL EXCEPTION: main 
02-19 15:32:04.070: E/AndroidRuntime(14349): java.lang.NullPointerException 
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at de.vertretungsplan2.helper.DBHandler.insertKurs(DBHandler.java:95) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at de.vertretungsplan2.tabswipe.adapter.KurseFragment$1.onItemClick(KurseFragment.java:38) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.widget.AdapterView.performItemClick(AdapterView.java:297) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.widget.AbsListView.performItemClick(AbsListView.java:1100) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2788) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.widget.AbsListView$1.run(AbsListView.java:3463) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.os.Handler.handleCallback(Handler.java:730) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.os.Looper.loop(Looper.java:137) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.app.ActivityThread.main(ActivityThread.java:5289) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at java.lang.reflect.Method.invokeNative(Native Method) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at java.lang.reflect.Method.invoke(Method.java:525) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
02-19 15:32:04.070: E/AndroidRuntime(14349): at dalvik.system.NativeStart.main(Native Method) 

Это метод, который должен написать в базе данных:

public void insertKurs(String Kurs){ 
    long rowId = -1; 
    try{ 
     //open Database 
     SQLiteDatabase db = this.getWritableDatabase(); 
     //Content 
     ContentValues values = new ContentValues(); 
     values.put(KURS_NAME, Kurs); 
     //insert Values in Table 
     rowId = db.insert(TABLE_NAME_KURS, null, values); 
     db.close(); 
    }catch (SQLiteException e){ 
     Log.e(TAG,"insert()",e); 
    }finally{ 
     Log.d(TAG, "insert(): rowId=" + rowId);   
    } 
} 

Этого метод работа без каких-либо проблем:

public void insertPW(String PW){ 
    SQLiteDatabase db = null; 
    long rowId = -1; 
    try{ 
     //open Database 
     db = this.getWritableDatabase(); 
     //Content 
     ContentValues values = new ContentValues(); 
     values.put(PASSWORD_NAME, PW); 
     //insert Values in Table 
     rowId = db.insert(TABLE_NAME_PW, null, values); 
     db.close(); 
    }catch (SQLiteException e){ 
     Log.e(TAG,"insert()",e); 
    }finally{ 
     Log.d(TAG, "insert(): rowId=" + rowId);   
    } 
} 

Это метод, который называют другим:

public void onItemClick(AdapterView<?>arg0,View v, int position,long id){     
      db.insertKurs(kursView1.getItemAtPosition(position).toString()); 

     } 
    }); 

Спасибо за помощь и извините за мой английский: D

+0

Какая строка является 95-й строкой 'DBHandler.java'? –

ответ

21

Context вы прошли в SQLiteOpenHelper конструктор был null.

+0

Хорошо, но почему это работает с паролем? – user3328547

+0

частный DBHandler db = новый DBHandler (getActivity()); то это должна быть проблема? – user3328547

+0

сейчас он работает спасибо – user3328547