【问题标题】:Share data between viewmodels在视图模型之间共享数据
【发布时间】:2018-12-15 15:28:50
【问题描述】:

我有一个包含关联视图模型的活动。视图模型从在线存储库加载数据。在同一个活动中,我有一个包含 viewpager 的表格布局。在视图页面中有几个片段。

如何访问片段中的活动视图模型?

【问题讨论】:

    标签: android


    【解决方案1】:

    你可以像这样在片段之间共享视图模型

    类 MasterFragment : Fragment() {

    private lateinit var itemSelector: Selector
    
    private lateinit var model: SharedViewModel
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        model = activity?.run {
            ViewModelProviders.of(this).get(SharedViewModel::class.java)
        } ?: throw Exception("Invalid Activity")
        itemSelector.setOnClickListener { item ->
            // Update the UI
        }
    }
    

    }

    类 DetailFragment : Fragment() {

    private lateinit var model: SharedViewModel
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        model = activity?.run {
            ViewModelProviders.of(this).get(SharedViewModel::class.java)
        } ?: throw Exception("Invalid Activity")
        model.selected.observe(this, Observer<Item> { item ->
            // Update the UI
        })
    }
    

    }

    https://developer.android.com/topic/libraries/architecture/viewmodel

    或者只是在您的活动中公开您的视图模型,然后在您的片段中调用它,例如:

    (activity as MainActivity).viewmodel // MainActivity 是你的活动

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 2013-09-21
      相关资源
      最近更新 更多