当前位置: 首页 > 知识库问答 >
问题:

获取跨不同片段的ViewModel的独立实例

胥玮
2023-03-14
/*
I/EditDictGroupFrag: dictViewModel = com.example.mydictionaryapp.dictionary.DictionaryInterfaceViewModel@8326975
DictInterface: dictViewModel = com.example.mydictionaryapp.dictionary.DictionaryInterfaceViewModel@80e8488


//I set the value in EditGroupFragment
I/onGetAllDictGroups: allDictGroups.value set to : [Test Group]

//I check what the value is in my InterfaceFragment
DictInterface : dictViewModel.allDictGroups.value = [Test Group 1, Test Group 2]
*/

这就是我在每个片段中获取viewmodel的方法。(我不想发布所有其他无关的代码

class DictionaryInterfaceFragment: Fragment() {
    private lateinit var dictViewModel: DictionaryInterfaceViewModel
        override fun onCreateView(
            inflater: LayoutInflater,
            container: ViewGroup?,
            savedInstanceState: Bundle?
        ): View? {
            dictViewModel = ViewModelProvider(this).get(DictionaryInterfaceViewModel::class.java)
            dictViewModel.dictGroupNames.observe(viewLifecycleOwner, Observer {
                    allDictGroups -> // set spinner items
                }    
            }
}

共有1个答案

申屠宏胜
2023-03-14

所以在写问题的时候,我偶然发现了一个解决方法。通过将活动传递到ViewModelProvider中,两个片段都可以访问同一个viewmodel,而不是由provider为每个片段提供不同的实例

例如。

dictViewModel = ViewModelProvider(requireActivity()).get(DictionaryInterfaceViewModel::class.java)

请随意贡献任何其他的讨论,我希望这对某人有所帮助。

 类似资料:
  • 我需要观察Modelview中的livedata更改来更新片段(将列表添加到RecycerView中)。 该实现工作正常,但在片段之间切换时面临问题。 并试图将观察者移除为:或或或尝试在

  • 我使用单个viewModel来处理活动和它的所有片段。 但当我尝试在应用程序中使用时,却找不到它们的引用。 我想要帮助如何使用这些扩展的一些基本的例子,我尝试搜索的例子没有找到任何。

  • 问题内容: 我托管了5个片段,在每个片段上我都需要填写一些字段。 我想从中获取这些字段的值。我尝试了类似的东西: AddActivity.java FragPagerAdapter.java OtherFragment.java 公共类OtherFragment扩展Fragment {Button btn; 更新 的问题我总是得到EditText(而其他字段要获得)的问题等于null如果它们位于片

  • 我正在实现一个片段,该片段调用两个。

  • 下面是我的代码,它有,每个片断类嵌入了上的3个选项卡。我有菜单选项。如所示,通过选择一个选项,我需要更新当前可见的片段。要更新它,我必须调用fragment类中的一个方法。有人能建议一下如何调用那个方法吗? 假设下面是我要调用的具有方法的片段类:

  • 我正在开发一个电子商务网站,我使用三个表来管理产品和类别。 我需要一个或多个带有实体框架的linq查询来获得母类别列表、子类别列表和相关产品列表。 有一个类别表,如: Id NameCat ParentId 有一个products表,如: Id名称实时信息等。 有一个product-category表,如: Id categoryId productId sortOrder 这是我的viewmod