getApplition()不返回应用程序实例

时间:2018-03-12 16:19:39

标签: android dagger-2

在清单文件中,我设置:

<application  android:name=".MyApplication" />

但是在我打电话的活动中:

getApplication()

它返回android.app.Application实例而不是MyApplication实例。 我认为这是因为我使用的是Dagger2。我是dagger2的新手

2 个答案:

答案 0 :(得分:0)

访问应用程序实例的更好方法 - Application类中的属性。 Java示例:

class App extends Application {

   private static App instance;

   @Override
   public void onAttachBaseContext(Context newBase) {
      super.onAttachBaseContext(newBase);
      this.instance = this;
   }

   public static App getInstance() {
      return this.instance;
   }

}

答案 1 :(得分:0)

您的MyApplicationandroid.app.Application的子类,getApplication()将其作为Application实例返回,但它实际上是您的类。这是继承的使用。您需要通过

进一步处理它
MyApplication myApp = null;

Application app = getApplication();
if (app instanceOf MyApplication) {
    myApp = (MyApplication) app;
}

或者你可以简单地做

MyApplication myApp = (MyApplication) getApplication();