簡體   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