update()
方法的实施可能有些问题,但我不确定是什么:
@Override
public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s, @Nullable String[] strings) {
int count = 0;
switch (uriMatcher.match(uri)) {
case uriCode:
break;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
以下是我如何称呼该方法:
Random r1 = new Random();
long insertValue1 = r1.nextInt(5);
updatedValues.put(Provider.adPoints, insertValue1);
int value = getContentResolver().update(Provider.CONTENT_URI, updatedValues, null, null); //insert(Provider.CONTENT_URI, values);
我还想使用count
并返回update()
中更新的行数。这里看来有什么不对?
答案 0 :(得分:0)
Switch中没有更新代码。我想你错过了它
答案 1 :(得分:0)
为了使用Content Provider获取行更新,您必须执行此操作:
首先确保您在ContentProvider中引用了DatabaseHelper类:
private YourDatabaseSQLLiteHelper mDbHelper;
@Override
public boolean onCreate() {
mDbHelper = new YourDatabaseSQLLiteHelper(getContext());
return true;
}
然后覆盖内容提供商的update()方法:
@Override
public int update(@NonNull Uri uri, @Nullable ContentValues cv, @Nullable String selection, @Nullable String[] selectionArgs) {
int rowsUpdated;
switch (sUriMatcher.match(uri)) {
case YOUR_TABLE_CODE:
// This is what you need.
rowsUpdated = mDbHelper.getWritableDatabase().update(
YourTableContract.YourTableEntry.TABLE_NAME,
cv,
selection,
selectionArgs);
break;
default:
throw new UnsupportedOperationException("Unknown uri: " + uri);
}
if (rowsUpdated != 0)
getContext().getContentResolver().notifyChange(uri, null);
return rowsUpdated;
}
然后,当您调用该方法时,它必须返回已更新的行数。
int rowsUpdatedCount = getContentResolver().update(...);
如果这对你有用,请告诉我。