4

IntelliJ で実行されている Dagger の単純な例を取得しようとしていますが、DemoBaseActivity クラスの getApplication 呼び出しで失敗しています。

public abstract class DemoBaseActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
    ((DemoApplication) getApplication()).inject(this);
  }
}

インジェクション メソッドにヒットすると、アプリはエラーなしでサイレントに失敗します。DemoBaseActivity の代わりに基本クラス Activity のインスタンスを使用してプロジェクトをビルドしたところ、問題なくデプロイされました。

何かご意見は?

編集:

アクティビティの getApplication() 呼び出しの戻り値がカスタム DemoApplication タイプとしてキャストされると、壊れているようです。

package com.badlogic.androidgames.simple;

import android.app.Application;
import dagger.ObjectGraph;

import java.util.Arrays;
import java.util.List;

    public class DemoApplication extends Application
    {
    private ObjectGraph graph;

    @Override
    public void onCreate()
    {
    super.onCreate();
    graph = ObjectGraph.create(getModules().toArray());
    }

    protected List<Object> getModules()
    {
    return Arrays.asList(new AndroidModule(this), new DemoModule());
    }

    public void inject(Object object)
    {
    graph.inject(object);
    }
    }

編集: スタック トレースは次のとおりです。

10-03 05:15:25.331: エラー/AndroidRuntime(5035): 致命的な例外: main java.lang.RuntimeException: アクティビティを開始できません ComponentInfo{com.badlogic.androidgames.simple/com.badlogic.androidgames.simple.ui. HomeActivity}: java.lang.ClassCastException: android.app.Application は android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) で com.badlogic.androidgames.simple.DemoApplication にキャストできません android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2261) で android.app.ActivityThread.access$600(ActivityThread.java:141) で android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) で android.os.Handler.dispatchMessage(Handler) .java:99) で android.os.Looper.loop(Looper.java:137) で android.app.ActivityThread.main(ActivityThread.java:5103) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit. java:737) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) で dalvik.system.NativeStart.main(Native Method) の原因: java.lang.ClassCastException: android.app.Application はできませんcom.badlogic.androidgames.simple.ui.HomeActivity.onCreate(HomeActivity.java: 30) android.app.Activity.performCreate(Activity.java:5133) で android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) で android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)

4

1 に答える 1