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 次 |
| 最近记录: |