В одной из кодовых меток Google Activity1
отображает RecyclerView
, и при нажатии кнопки открывается Activity2
, где можно добавить новую запись.
Вместо доступа к ViewModel
в Activity2
и, добавив запись в базу данных напрямую, они отправляют запись обратно на Activity1
и вставляют ее туда.
В чем причина этого?Зачем отправлять данные обратно на Activity1
?Почему бы не позвонить ViewModelProviders.of(this)
в Activity2
и вставить туда запись?
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, NewWordActivity.class);
startActivityForResult(intent, NEW_WORD_ACTIVITY_REQUEST_CODE);
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == NEW_WORD_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
Word word = new Word(data.getStringExtra(NewWordActivity.EXTRA_REPLY));
mWordViewModel.insert(word);
} else {
Toast.makeText(
getApplicationContext(),
R.string.empty_not_saved,
Toast.LENGTH_LONG).show();
}
}
Источник: https://github.com/googlecodelabs/android-room-with-a-view/blob/master/app/src/main/java/com/example/android/roomwordssample/MainActivity.java