繁体   English   中英

具有MVVM架构组件的StartActivityForResult

[英]StartActivityForResult with MVVM Architecture Components

在其中一个Google Codelabs中, Activity1显示一个RecyclerView然后在按钮上单击打开Activity2 ,可以在其中添加新条目。

他们不是访问Activity2ViewModel并直接将条目添加到数据库,而是将条目发送回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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM