我有一个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;
}
答案 0 :(得分:0)
最有可能的是,您的SQLite数据库已经更改,但ContentResolver
不知道它。在update()
的{{1}}方法中,添加以下代码行:
ContentProvider
这会通知this.getContext().getContentResolver().notifyChange(uri, null);
发生了更改。然后解析器将更新依赖于数据的UI组件。