小编use*_*123的帖子

从 Fragment 调用 Hilt-Dagger ViewModel

我正在使用ViewModel更新操作栏中的标题

共享视图模型

class SharedViewModel @ViewModelInject constructor(
    @Assisted private val savedStateHandle: SavedStateHandle
) : ViewModel() {

    val title: MutableLiveData<String> by lazy {
        MutableLiveData<String>()
    }

    val backButton: MutableLiveData<Boolean> by lazy {
        MutableLiveData<Boolean>()
    }
}
Run Code Online (Sandbox Code Playgroud)

主活动观察者

@AndroidEntryPoint
...
sharedViewModel.title.observe(this, Observer {
    supportActionBar?.title = it
})
Run Code Online (Sandbox Code Playgroud)

使用下面的代码似乎创建了一个新实例Fragment(在调试器中检查):

@AndroidEntryPoint
...
private val viewModel: SharedViewModel by viewModels()
Run Code Online (Sandbox Code Playgroud)

但似乎以这种方式工作

val viewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
Run Code Online (Sandbox Code Playgroud)

文章参考

这是应该这样做还是我做错了什么?

谢谢!

android viewmodel kotlin dagger dagger-hilt

1
推荐指数
1
解决办法
1744
查看次数

标签 统计

android ×1

dagger ×1

dagger-hilt ×1

kotlin ×1

viewmodel ×1