为什么我不能调用自定义Application中直接声明的方法

时间:2018-02-21 14:53:44

标签: android

来自 florina-muntenescu 的MVVM示例代码。

DroidconApplication.java 中,在 MainActivity 中声明并调用了一个getViewModel()方法。

因此我想将它实现到我的项目中,我在自定义应用程序中声明了同样的事情,将应用程序实现到 AndroidManifest.xml ,但是找不到getViewModel()我的 MainActivity

我搜索了答案,首先通过

获取自定义应用程序

Application app = (CustomApplication) getApplication();

并通过app引用调用方法。

那为什么不和示例代码一样?

我错了什么?

Sample source code in Github

1 个答案:

答案 0 :(得分:0)

你试过这个

Application app = (CustomApplication) getApplication();
app.getViewModel();

app.getViewModel()无效,因为getViewModel()类中实际存在CustomApplication。它将在运行时工作,因为app是CustomApplication的实例,但在编译时,编译器无法理解app实际上是CustomApplication的实例。

所以使用这个:

CustomApplication app = (CustomApplication) getApplication();
app.getViewModel();