我试图在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覆盖时无声地失败所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)