我有一个应用程序,可以在某些条件下更新Firebase实时数据库中的备注对象。
这是我需要更新任何笔记时调用的常用代码
public final class FirebaseUtils{
public static void updateNote(Context context, Note currentNote) {
Timber.i("Update note called with note %s", currentNote.toString());
if (mAuth.getCurrentUser() == null) {
return;
}
HashMap<String, Object> noteMap = currentNote.getNoteMap();
String noteId = currentNote.getId();
String userId = mAuth.getCurrentUser().getUid();
Timber.i("Id is %s", noteId);
mDatabase.getReference(AppConstants.REFERENCE_USERS)
.child(userId)
.child(AppConstants.USER_NOTES)
.child(noteId)
.setValue(noteMap)
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Timber.i("Note updated successfully");
Toast.makeText(context, "Edited note", Toast.LENGTH_SHORT).show();
} else {
Timber.e("Error updating note %s", task.getException().getMessage());
Toast.makeText(context, "Error editing note", Toast.LENGTH_SHORT).show();
}
});
}
}
备注更新时的案例
onBackPressed回调被覆盖,并在那里更新注释。
@Override
public void onBackPressed() {
String title = titleNotesAdd.getText().toString().trim();
String content = edtContent.toHtml().trim();
currentNote.setTitle(title);
currentNote.setContent(content);
if (CURRENT_ACTION.equals(AppConstants.ACTION_ADD_NEW_NOTE)) {
currentNote.setTimestamp(System.currentTimeMillis());
FirebaseUtils.addNoteToUser(this, currentNote.getNoteMap());
} else if (CURRENT_ACTION.equals(AppConstants.ACTION_EDIT_NOTE)) {
FirebaseUtils.updateNote(this, currentNote);
}
super.onBackPressed();
}
点击底部工作表项时更新功能
public void setRemainder(){
currentNote.setRemainderSet(true);
currentNote.setRemainderTime(remainder.getTimeInMillis());
Utils.scheduleAlarm(this, currentNote);
FirebaseUtils.updateNote(this, currentNote);
}
按下后退按钮后,便笺会在Firebase实时数据库中正常更新。但是,当调用setRemainder方法时,数据库中的注释不会更新。
为什么会这样?我错过了什么吗?