AndroidViewModel
用于访问Application
上下文。我试图在不显式传递的情况下访问Activity
的FragmentManager
:
class FooViewModel(app: Application) : AndroidViewModel(app) {
private val fm = (app.applicationContext as Activity).fragmentManager
..
}
获取错误,无法将Context
转换为Activity
。
there :有没有办法在不显式传递的情况下让FragmentManager
进入AndroidViewModel
?
发布于 2017-06-15 18:45:59
我认为简短的答案将是“不,没有办法”,因为Application
上下文不知道FragmentManager
。
FragmentManager
是FragmentActivity
的子类可能具有的对象。Application
不是FragmentActivity
的子类。
另一个问题是,为什么在ViewModel
中需要一个FragmentManager
实例?最有可能的是,你应该把与视图相关的东西委托给ViewModel
以外的其他单位来处理(例如Activity
,Fragment
)。请记住,此ViewModel
将在配置更改后保留,因此,如果在ViewModel
中保留对FragmentManager
的引用,将会泄漏Activity
实例。
https://stackoverflow.com/questions/44565431
复制相似问题