![](/img/trans.png)
[英]StartActivityForResult to get images from gallery in MVVM architecture?
[英]StartActivityForResult with MVVM Architecture Components
在其中一个Google Codelabs中, Activity1
显示一个RecyclerView
然后在按钮上单击打开Activity2
,可以在其中添加新条目。
他们不是访问Activity2
的ViewModel
并直接将条目添加到数据库,而是将条目发送回Activity1
并将其插入到那里。
这背后的原因是什么? 为什么要将数据发送回Activity1
? 为什么不在Activity2
调用ViewModelProviders.of(this)
并在那里插入条目?
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
查看NewWordActivity类,它非常简单,不需要自己的ViewModel。 我的猜测是,为了将一个条目插入数据库的单一目的,避免需要创建一个,为MainActivity赋予了这个责任。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.