2016-11-25 40 views
-1

アダプタクラスでボタンをクリックしたときに2つのクエリを実行したいときは、最初にテーブルAからデータを選択してテーブルBに挿入し、もう1つはテーブル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();を削除し、ちょうどdeleteTask.deleteData(id);の代わりにdeleteData(id)を使用することにしました。アダプタ内のメソッドを呼び出すが、アダプタ内の他のクラスオブジェクトを呼び出さない。

-1

あなたが削除クエリにnullを渡しているので、これは、このようにコードを更新し、それは私の作品

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

私はまだ同じエラーを受けています – Tony

+1

誰でも私にdownvotedされている理由を教えてくれますか? –

0

を確認してください、あなたはすべてを削除するには、このコードを変更することができます...それを試してみてください。..

db= myDb.getWritableDatabase(); 
db.delete(TABLE_NAME, " ID=? " , new String[] {id},null); 
db.close(); 
関連する問題