在其中一个Google Codelabs中,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();
}
}
答案 0 :(得分:0)
查看NewWordActivity类非常简单,不需要自己的ViewModel。我的猜测是,这是为了避免为了将一个条目插入数据库中而将其赋予MainActivity的单一目的而创建一个条目。