0le*_*leg 3 android android-fragments kotlin fragmentmanager android-architecture-components
AndroidViewModel
用于访问Application
上下文.我试图在没有明确传递Activity
的FragmentManager
情况下访问它:
class FooViewModel(app: Application) : AndroidViewModel(app) {
private val fm = (app.applicationContext as Activity).fragmentManager
..
}
Run Code Online (Sandbox Code Playgroud)
得到错误,无法投射Context
到Activity
.
问题:有没有办法进入FragmentManager
内部AndroidViewModel
而不明确地传递它?
我认为简短的回答将是"不,没有办法",因为Application
背景是没有意识到的FragmentManager
.
FragmentManager
是FragmentActivity
可能具有的子类的对象.Application
不是的子类FragmentActivity
.
另一个问题是,为什么你需要一个FragmentManager
实例ViewModel
?最有可能你应该委托视图相关的东西来处理比其它其它单元ViewModel
(例如Activity
,Fragment
).请记住,这ViewModel
将保留在配置更改之上,因此如果您保留对FragmentManager
内部的引用ViewModel
,则会泄露您的Activity
实例.
归档时间: |
|
查看次数: |
1071 次 |
最近记录: |