Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Dagger项目在getApplication override上以静默方式失败_Android_Intellij Idea_Dagger - Fatal编程技术网

Android Dagger项目在getApplication override上以静默方式失败

Android Dagger项目在getApplication override上以静默方式失败,android,intellij-idea,dagger,Android,Intellij Idea,Dagger,我试图让Dagger简单示例在IntelliJ中运行,但在DemoBaseActivity类中的getApplication调用中失败: public abstract class DemoBaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ((DemoApplication) g

我试图让Dagger简单示例在IntelliJ中运行,但在DemoBaseActivity类中的getApplication调用中失败:

public abstract class DemoBaseActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
    ((DemoApplication) getApplication()).inject(this);
  }
}
当它点击注入方法时,应用程序会无声地失败,没有错误。我用基类活动的实例而不是DemoBaseActivity构建了这个项目,它部署得很好

有什么想法吗

编辑:


当活动的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);
    }
    }
package com.badlogic.androidgames.simple;
导入android.app.Application;
导入dagger.ObjectGraph;
导入java.util.array;
导入java.util.List;
公共类DemoApplication扩展了应用程序
{
私有对象图;
@凌驾
public void onCreate()
{
super.onCreate();
graph=ObjectGraph.create(getModules().toArray());
}
受保护的列表getModules()
{
返回Arrays.asList(新的AndroidModule(this),新的DemoModule());
}
公共无效注入(对象)
{
图形注入(对象);
}
}
编辑:以下是堆栈跟踪:

10-03 05:15:25.331:错误/AndroidRuntime(5035):致命异常:主 java.lang.RuntimeException:无法启动活动组件信息{com.badlogic.androidgames.simple/com.badlogic.androidgames.simple.ui.HomeActivity}:java.lang.ClassCastException:android.app.Application无法强制转换为com.badlogic.androidgames.simple.DemoApplication 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)上 在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) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:525) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:737) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 在dalvik.system.NativeStart.main(本机方法) 原因:java.lang.ClassCastException:android.app.Application无法转换为com.badlogic.androidgames.simple.DemoApplication 位于com.badlogic.androidgames.simple.DemoBaseActivity.onCreate(DemoBaseActivity.java:33) 位于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)

上,如评论中所述,您忘记在AndroidManifest文件中提到您的应用程序类。这就是解决办法:

<application
    android:name="com.badlogic.androidgames.simple.DemoApplication"
...
>

...
</application>

...

能否提供更多详细信息,说明您认为它失败的原因?当“活动”的getApplication()调用的返回值被强制转换为自定义DemoApplication类型时,它似乎已中断。请粘贴stacktrace!啊哈。找到堆栈跟踪。是否在AndroidManifest中指定了应用程序?