Ind*_*Nai 4 android intellij-idea dagger
我试图在IntelliJ中运行Dagger简单示例,但它在DemoBaseActivity类中的getApplication调用失败:
public abstract class DemoBaseActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((DemoApplication) getApplication()).inject(this);
}
}
Run Code Online (Sandbox Code Playgroud)
当它达到注入方法时,应用程序会无声地失败而没有错误.我使用基类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);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:这是堆栈跟踪:
10-03 05:15:25.331:ERROR/AndroidRuntime(5035):FATAL EXCEPTION:main java.lang.RuntimeException:无法启动活动ComponentInfo {com.badlogic.androidgames.simple/com.badlogic.androidgames.simple.ui. HomeActivity}:java.lang.ClassCastException:android.app.Application无法在android.app.ActivityThread.handleLaunchActivity的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)上强制转换为com.badlogic.androidgames.simple.DemoApplication. (ActivityThread.java:2261)在Android.app.Handler.dispatchMessage(Handler)上的android.app.ActivityThread.access $ 600(ActivityThread.java:141)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1256) .java:99)在android.app.Looper.loop(Looper.java:137)android.app.ActivityThread.main(ActivityThread.java:5103)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:525)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit. java:737)at 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.DemoBaseActivity.onCreate(DemoBaseActivity.java:33)中的com.badlogic.androidgctivity.simple.DeCappate.HomeActivity.onCreate(HomeActivity.java:)中转换为com.badlogic.androidgames.simple.DemoApplication. 30)在Android.app上的android.app.Activity.performCreate(Activity.java:5133)android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087).ActivityThread.performLaunchActivity(ActivityThread.java:2175)
Eug*_*nov 12
正如评论中所讨论的那样 - 您忘了在AndroidManifest文件中提及您的应用程序类.这就是解决方案:
<application
android:name="com.badlogic.androidgames.simple.DemoApplication"
...
>
...
</application>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |