AndroidViewModel
用于访问 Application
上下文。我正在尝试访问 Activity
的 FragmentManager
而不显式传递它:
class FooViewModel(app: Application) : AndroidViewModel(app) {
private val fm = (app.applicationContext as Activity).fragmentManager
..
}
出现错误,无法将 Context
转换为 Activity
。
问题:有没有办法在AndroidViewModel
中获取FragmentManager
而不显式传递它?
最佳答案
我认为简短的回答是“不,没有办法”,因为Application
上下文不知道FragmentManager
。
FragmentManager
是 FragmentActivity
的子类可能拥有的对象。 Application
不是 FragmentActivity
的子类。
另一个问题是,为什么您的 ViewModel
中需要一个 FragmentManager
实例?最有可能的是,您应该将与 View 相关的内容委托(delegate)给 ViewModel
以外的其他单元来处理(例如,Activity
、Fragment
)。请记住,此 ViewModel
将在配置更改后保留,因此如果您在 ViewModel
中保留对 FragmentManager
的引用,您d 会泄露您的 Activity
实例。
关于android - 在 AndroidViewModel 中获取 FragmentManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44565431/