2013-03-24 26 views
0

奇怪的是我的內容提供商不刪除我要求的行。據我看到它應該工作,我不明白爲什麼它不。內容提供商刪除不起作用

這是在我的供應商的刪除方法:

@覆蓋 公衆詮釋刪除(URI的URI,串選擇,字符串[] selectionArgs兩個){ SQLiteDatabase分貝= helper.getWritableDatabase();

switch (uriMatcher.match(uri)) { 
case SINGLE_ROW: 
    String rowID = uri.getPathSegments().get(1); 

    selection = KEY_ROWID 
      + "=" 
      + rowID 
      + (!TextUtils.isEmpty(selection) ? " AND (" + selection 
        + ')' : ""); 
    Log.i("Selection", "" + selection); 
    break; 
case ALLROWS: 
    Log.i("Deleted", "All rows"); 
    break; 

default: 
    Log.i("Switch case", "default value"); 
    break; 
} 

if (selection == null) { 
    selection = "1"; 
} 

int deleteCount = db.delete(helper.DATABASE_TABLE, selection, 
     selectionArgs); 
Log.i("Deleted rows", 
     "" + db.delete(helper.DATABASE_TABLE, selection, selectionArgs)); 
getContext().getContentResolver().notifyChange(uri, null); 

return deleteCount; 

}

這裏是日誌輸出,表示沒有行已被刪除,這使得沒有意義的我。 任何人都可以幫忙嗎?

03-24 22:36:34.809:I /選擇(27648):_id = 2 03-24 22:36:34.809:I /刪除的行(27648):0 03-24 22 :36:34.814:I /刪除URI(27648):內容://com.shifts.provider/shiftsTEST/2

回答

1

我已經找到了問題我自己 - 我已經重構的方法是這樣的:

@Override 
public int delete(Uri uri, String selection, String[] selectionArgs) { 
    SQLiteDatabase db = helper.getWritableDatabase(); 


    int deleteCount = db.delete(helper.DATABASE_TABLE, KEY_ID + "=" 
      + Integer.valueOf(selection), null); 
    Log.i("Selection", "" + selection); 

    getContext().getContentResolver().notifyChange(uri, null); 

    return deleteCount; 
}