android – 如何将editText值传递给viewModel和Livedata(Kotlin)

weixin_38105839 2019-09-12 12:06:39
我正在研究Android Kotlin并做一个简单的例子来展示LiveData ViewModel.这很简单:我有一个根活动和两个片段. FragmentOne有两个editText.这些值相加,我需要将结果传递给ViewModel.然后,我在根活动和FragmentTwo中使用observe来查看更改的数据. FragmentOne class FragmentOne: Fragment() { private val model by lazy { ViewModelProviders.of(activity).get(MyViewModel::class.java) } var resultSum:Int = 0 override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater?.inflate(R.layout.fragment_one,container,false) val btn = view?.findViewById<Button>(R.id.sendToModel) btn?.setOnClickListener({ val field1 = n1.text.toString().toInt() val field2 = n2.text.toString().toInt() resultSum = field1 + field2 model.update() }) return view } } 视图模型 class MyViewModel: ViewModel() { private val fragment by lazy {FragmentOne()} private var _result = MutableLiveData<Int>().apply { value = 0 } val result: LiveData<Int> get() = _result fun update(){ _result.value = fragment.resultSum } } 观察者根活动 private val resultModel by lazy {ViewModelProviders.of(this).get(MyViewModel::class.java)} resultModel.result.observe(this, Observer { result -> resultTxt.text = result.toString()}) Observer FragmentTwo private val resultModel by lazy {ViewModelProviders.of(activity).get(MyViewModel::class.java)} resultModel.result.observe(this, Observer { result -> resultTxt.text = result.toString()}) 我检查了var resultSum(Log)并且它保存了来自sum的Int值.观察者也在工作(如果我在ViewModel中实例化result.value,则值可以观察到活动和片段) 我感谢任何帮助.
...全文
530 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38140396 2019-09-12
  • 打赏
  • 举报
回复
ViewModel不应该对Android.*库有任何引用.因此,您对FragmentOne的引用是一种不好的做法. 更简洁的方法是更改​​update()函数以接受String – fun update(result: String){ _result.value = result } 并更改您的FragmentOne代码说 – btn?.setOnClickListener({ val field1 = n1.text.toString().toInt() val field2 = n2.text.toString().toInt() resultSum = field1 + field2 model.update(resultSum) })

473

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧