抱歉,我不擅长英语。
我正在学习在Udacity中开发Android应用程序。我在Content Provider中实现了insert(),并且很奇怪。在这段代码中,有两个不同的URI,分别是returnUri和uri(过去uri通过参数传递)。
@Override
public Uri insert(Uri uri, ContentValues values) {
final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
final int match = sUriMatcher.match(uri);
Uri returnUri;
switch (match) {
case WEATHER: {
normalizeDate(values);
long _id = db.insert(WeatherContract.WeatherEntry.TABLE_NAME, null, values);
if ( _id > 0 )
returnUri = WeatherContract.WeatherEntry.buildWeatherUri(_id);
else
throw new android.database.SQLException("Failed to insert row into " + uri);
break;
}
default:
throw new UnsupportedOperationException("Unknown uri: " + uri);
}
getContext().getContentResolver().notifyChange(uri, null);
return returnUri;
}
请注意代码的底部。在本讲座中,我必须在getContext()。getContentResolver()。notifyChange()中使用过去的uri,而不是returnUri。 '请注意,我们必须在URI中使用过去,而不是返回URI,因为这将无法正确通知我们的游标更改。'我不明白这一点。我只是使用returnUri而不是过去的uri。然后通过测试,它工作了!我必须使用过去的uri吗?