Firebase未获得更新

时间:2018-02-20 10:31:00

标签: android firebase firebase-realtime-database

我有一个应用程序,可以在某些条件下更新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

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方法时,数据库中的注释不会更新。

为什么会这样?我错过了什么吗?

0 个答案:

没有答案