2016-11-25 3 views
-1

Я хочу выполнить 2 запроса, когда кнопка нажата в классе адаптера, сначала выберите данные из таблицы A и вставьте в таблицу B, другая строка удаления из таблицы A.Получить ошибку при попытке выполнить запрос на удаление

адаптер

mdb = new MyDatabaseHelper(v.getContext()); 
database = mdb.getReadableDatabase(); 
deleteTask = new DeleteTask(); 
Cursor cursor = database.rawQuery("SELECT * FROM " + MyDatabaseHelper.TABLE__TASK + " WHERE ID = ? ", new String[]{id+""}, null); 
if (cursor != null && cursor.getCount() > 0) { 
     while (cursor.moveToNext()) { 
       String allTask = cursor.getString(cursor.getColumnIndex("Title")); 
      String name = cursor.getString(cursor.getColumnIndex("Name")); 
      String allTime = cursor.getString(cursor.getColumnIndex("Time")); 
      String allDate = cursor.getString(cursor.getColumnIndex("Date")); 
      insertDataToCompleteTab(id, name, allTask, allTime, allDate); //insert to Completed table 
      deleteTask.deleteData(id); // delete the row of data from Task Table 
     } 
} 

DeleteTask

public void deleteData(int id) 
    { 
     database = mdb.getWritableDatabase(); 
     database.delete(MyDatabaseHelper.TABLE__TASK, MyDatabaseHelper.ID1 + "=" + id,null); 
     database.close(); 
    } 

Ошибка

java.lang.NullPointerException 
      at com.example.seng.healthyapp.DeleteTask.deleteData(DeleteTask.java:124) 
      at com.example.seng.healthyapp.adapter.AllAdapter$1.onClick(AllAdapter.java:139) 
      at android.view.View.performClick(View.java:4230) 

Ошибка указывает на метод DeleteTask. Но я их инициализировал, почему я все еще получаю такую ​​ошибку?

+0

@ 0xDEADC0DE Давай, не из-за получения этой ошибки, и вы сказали, что она дублируется. Я читал эту статью много времени, но все еще не могу решить – Tony

+0

Я не вижу, как это не дубликат вопроса, объясняющего, что такое NPE и как его исправить. У вас явно есть NPE в вашем собственном коде, который (скорее всего) легко решается при его отладке. – 0xDEADC0DE

+0

Только вы знаете, какая строка имеет номер 124. –

ответ

0

После поиска здесь и там, я решил удалить deleteTask = new DeleteTask(); и просто использовать deleteData(id) вместо deleteTask.deleteData(id);. Вызовите метод внутри адаптера, но не вызывайте другие объекты класса в адаптере.

-1

Это потому, что вы передаете в нуль удаления запроса, пожалуйста, обновите ваш код, как это и проверить

public void deleteData(int id) 
    { 
     database = mdb.getWritableDatabase(); 
     database.delete(MyDatabaseHelper.TABLE__TASK, MyDatabaseHelper.ID1 + "=?" , new String[] {id}); 
     database.close(); 
    } 
+0

Я до сих пор получаю ту же ошибку – Tony

+1

Кто-нибудь скажет мне, почему она занижена? –

0

Это работает для меня, попробовать ... Вы можете изменить этот код, чтобы удалить все ..

db= myDb.getWritableDatabase(); 
db.delete(TABLE_NAME, " ID=? " , new String[] {id},null); 
db.close(); 
Смежные вопросы