[英]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.