android–Dagger项目在getApplication覆盖时无声地失败

android–Dagger项目在getApplication覆盖时无声地失败,第1张

概述我试图在IntelliJ中运行Dagger简单示例,但它在DemoBaseActivity类中的getApplication调用失败:publicabstractclassDemoBaseActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);((DemoAppl

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

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

当它达到注入方法时,应用程序会无声地失败而没有错误.我使用基类Activity的实例而不是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:ERROR / AndroIDRuntime(5035):致命异常:主要
        java.lang.RuntimeException:无法启动活动ComponentInfo {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)
        at java.lang.reflect.Method.invokeNative(Native Method)
        在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)
        at dalvik.system.NativeStart.main(Native Method)
        引起: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>
总结

以上是内存溢出为你收集整理的android – Dagger项目在getApplication覆盖时无声地失败全部内容,希望文章能够帮你解决android – Dagger项目在getApplication覆盖时无声地失败所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116400.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存