LiveData使用 navigation中activity fragment共享数据

使用LifeData需要添加依赖


    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:1.1.1"
    // alternatively, just ViewModel
    implementation "android.arch.lifecycle:viewmodel:1.1.1"
    // alternatively, just LiveData
    implementation "android.arch.lifecycle:livedata:1.1.1"

新建TestViewModel.kt

import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel

class TestViewModel : ViewModel() {
    val currentName: MutableLiveData<String> by lazy {
        MutableLiveData<String>()
    }
}

navagation中fragment共享数据可以这样用

  // 注意,因为fragment要和activity共享数据,所以ViewModelProvider.of(  这里传入fragment依附的activity  )
 private val viewModel by lazy {
        ViewModelProviders.of(activity!!).get(TestViewModel::class.java)
    }



 //监听数据的改变
viewModel.currentName.observe(this, Observer {
            text.text = it
        })

如果要改变则直接setValue()

  change.setOnClickListener {
            viewModel.currentName.value = "已经改变了,现在是word"
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值