SQLiteDatabase仅在重新打开应用程序时更新

时间:2014-10-20 00:32:02

标签: android sqlite

我有一个Android应用程序,当我单击地图中的标记时,它成功地在我的数据库中插入数据。

我有一个活动可以更新数据库中的信息(列)。它在我的第一次尝试时没有更新,但是当我关闭时,退出应用程序,再次运行它并再次更新信息,它成功更新,所以我相信我的代码是正确的。会有什么问题?

过程:

第一次打开

  • 放置标记

  • onInfoWindowClick启动新的activityForResult

  • 填写字段

  • 保存(按钮)

  • 返回值以更新行

  • 不会更新

重新打开

  • 单击现有标记时,填写字段,保存时更新
  • 放置新标记时,填写字段,不更新(意味着需要重新打开)

致电更新:

ContentValues cv = new ContentValues();
cv.put(LocationsDB.FIELD_TITLE, newReminder);
cv.put(LocationsDB.FIELD_MONTH, mm_final);
cv.put(LocationsDB.FIELD_DAY, dd_final);
cv.put(LocationsDB.FIELD_YEAR, yy_final);

getContentResolver().update(LocationsContentProvider.CONTENT_URI, cv, "lat=? AND lng=?", new String[] {location_lat, location_lng});

LocationContentProvider.java:

public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs){
    int count;
    count = mLocationsDB.update(values, selection, selectionArgs);
    return count;
}

LocationsDB.java:

public int update(ContentValues contentValues, String where, String[] whereArgs){
    int cnt = mDB.update(DATABASE_TABLE, contentValues, where, whereArgs);
    return cnt;
}

1 个答案:

答案 0 :(得分:0)

最有可能的是,您的SQLite数据库已经更改,但ContentResolver不知道它。在update()的{​​{1}}方法中,添加以下代码行:

ContentProvider

这会通知this.getContext().getContentResolver().notifyChange(uri, null); 发生了更改。然后解析器将更新依赖于数据的UI组件。