В настоящее время я работаю над приложением для заметок, которое следует архитектуре MVVM. Есть 2 вида деятельности. Основной со списком заметок и режим просмотра, который позволяет пользователю просматривать заметки. Если они нажимают на описание или заголовок, он позволяет режим редактирования, где вы можете сохранить изменения, а что нет. Когда создается новая заметка, пользователь переводит заметки на одно и то же действие и включает режим редактирования с пустым заголовком и описанием. Проблема, с которой я столкнулся на данный момент, состоит в том, что если пользователь создает заметку и решает редактировать ее сразу после ее создания, когда пользователь возвращается к списку заметок, у него есть куча заметок, каждая из которых содержит каждое обновление, которое он сделал, поэтому заметка сохраняется в новую заметку вместо обновления существующей.
Код для сохранения заметки:
private void saveNote(){
//updates existing note. Next Statement adds new note
if(getIntent().hasExtra(EXTRA_ID)){
mViewTitle.setText(mEditTitle.getText().toString());
String timeStamp = Utility.getCurrentTimestamp();
timeStamp = timeStamp.replace("-", " ");
Note note = new Note(mTitle, mContent, timeStamp);
note.setId(mID);
mAddEditNoteViewModel.update(note);
Toast.makeText(this, "Note Updated", Toast.LENGTH_SHORT).show();
} else if(!getIntent().hasExtra(EXTRA_ID)){
mViewTitle.setText(mEditTitle.getText().toString());
String timeStamp = Utility.getCurrentTimestamp();
timeStamp = timeStamp.replace("-", " ");
Note note = new Note(mTitle, mContent, timeStamp);
mAddEditNoteViewModel.insert(note);
Toast.makeText(this, "New Note Created:", Toast.LENGTH_SHORT).show();
}
}
, как вы можете видеть, я проверяю, нужно ли мне обновить или создать новую заметку, проверяя, есть ли у намерения нужные мне данные (в этом случае идентификатор). Но когда пользователь только что создал заметку и не go вернулся к основному действию, каждый раз, когда вновь создаваемая заметка обновляется без возврата к основному, вызывается оператор else if, создавая, таким образом, новую заметку. Я не могу найти способ обойти это. Я думал только о сохранении новой заметки ПОСЛЕ того, как пользователь возвращается к основному действию, но если пользователь создает заметку, нажимает значок галочки (чтобы сохранить) и закрывает приложение, не возвращаясь к основной, заметка не будет сохранены. Как я могу подойти к этой проблеме?