繁体   English   中英

如何在应用程序中跨多个片段共享数据?

[英]How can i share data across multiple fragments in application?

我正在开发一个应用程序,在该应用程序中,我在同一活动下跨多个片段从用户那里获取输入,然后我将该数据发送到 firebase 现在我如何使用共享视图模型来实现这一点,如果可能的话,请指导我如何实现这一点,我我对 android 完全陌生。 谢谢你

您能否详细说明并分享一些代码? 很难理解你的问题是什么。

我假设您想在片段之间共享数据。 一种方法是通过 ViewModels

具体来说,您需要这样的视图 model :

class SharedViewModel : ViewModel() {
    val selected = MutableLiveData<Item>()

    fun select(item: Item) {
        selected.value = item
    }
}

然后你有你的片段:

class SharedViewModel : ViewModel() {
    val selected = MutableLiveData<Item>()

    fun select(item: Item) {
        selected.value = item
    }
}

class ListFragment : Fragment() {

    private lateinit var itemSelector: Selector

    private val model: SharedViewModel by activityViewModels()

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        itemSelector.setOnClickListener { item ->
            // Update the UI
        }
    }
}

class DetailFragment : Fragment() {

    private val model: SharedViewModel by activityViewModels()

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        model.selected.observe(viewLifecycleOwner, Observer<Item> { item ->
            // Update the UI
        })
    }
}

请注意,两个片段都检索包含它们的活动。 这样,当每个片段都获得 ViewModelProvider 时,它们会收到相同的 SharedViewModel 实例,该实例的范围仅限于此活动。

如果您想了解更多相关信息,请参阅: https://developer.android.com/topic/libraries/architecture/viewmodel

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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