使用notifyChange()

时间:2015-08-25 05:10:19

标签: android-contentprovider

抱歉,我不擅长英语。

我正在学习在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吗?

0 个答案:

没有答案