gpt4 book ai didi

android fragment View 模型初始化失败

转载 作者:行者123 更新时间:2023-12-02 13:10:44 24 4
gpt4 key购买 nike

我正在尝试使用 kotlin 在 android 中实现数据绑定(bind):

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
mBinding = DataBindingUtil.inflate<ViewDataBinding>(
inflater, R.layout.fragment_login, container, false
) as FragmentLoginBinding
val view: View = mBinding.root
mBinding.login?.invoke(viewModel)
return view
}
但它说 lateinit 属性 viewModel 尚未初始化 在运行时。我该如何解决这个问题?
  • 在 fragment 中初始化将起作用
  • 如果你们给我提供从父级初始化的 View 模型会更好,父级是一个 Activity
  • 最佳答案

    如果你想在Activity中初始化viewModel并在fragment中使用你可以这样:
    主要 Activity .kt:

    private lateinit var viewModel: MainActivityVM

    override fun onCreate(savedInstanceState: Bundle?)
    {
    viewModel = ViewModelProvider(this).get(MainActivityVM::class.java)

    super.onCreate(savedInstanceState)
    }
    你的 fragment .kt:
    private lateinit var binding: YourFragmentBinding
    private lateinit var viewModel: MainActivityVM

    override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
    ): View?
    {
    binding = DataBindingUtil.inflate(
    inflater,
    R.layout.fragment_your, container, false
    )

    binding.lifecycleOwner = this

    viewModel = ViewModelProvider(requireActivity()).get(MainActivityVM::class.java)

    //here You can use Your viewModel

    return binding.root
    }

    关于android fragment View 模型初始化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63230997/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com