为什么在匕首2中组件== null?

时间:2017-04-01 23:29:11

标签: java android dagger-2

它似乎只是创建了AppComponent然后将其删除。在我的其他项目中,它可以正常工作。为什么appComponent变为null以及如何使其工作?

App.class

public class App extends Application {

private static AppComponent appComponent;

@Override
public void onCreate() {
    super.onCreate();
    buildGraphAndInject();
}

public static AppComponent getAppComponent() {
    if(appComponent == null) {
        Log.d("getter", "null");
    }
    return appComponent;
}

public void buildGraphAndInject() {
    appComponent = DaggerAppComponent.builder()
            .appModule(new AppModule(this))
            .build();

    appComponent.inject(this);

    if(appComponent == null) {
        Log.d("build", "null");
    }
}

}

来自活动

@Override
public void setupComponent(AppComponent appComponent) {

    mComponent = DaggerMainComponent.builder()
            .appComponent(App.getAppComponent())
            .build();

    mComponent.inject(this);
}

AppComponent

@Component(modules = {AppModule.class})
public interface AppComponent {
void inject(App app);
}

结果

04-02 02:16:23.544 32016-32016/exp.privatebank D/getter: null
04-02 02:16:23.569 32016-32016/exp.privatebank E/AndroidRuntime: FATAL EXCEPTION: main
                                                             java.lang.RuntimeException: Unable to start activity ComponentInfo{exp.privatebank/exp.privatebank.view.activity.MainActivity}: java.lang.NullPointerException
                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
                                                                 at android.app.ActivityThread.access$700(ActivityThread.java:159)
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
                                                                 at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                 at android.os.Looper.loop(Looper.java:176)
                                                                 at android.app.ActivityThread.main(ActivityThread.java:5419)
                                                                 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:1046)
                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
                                                                 at dalvik.system.NativeStart.main(Native Method)
                                                              Caused by: java.lang.NullPointerException
                                                                 at dagger.internal.Preconditions.checkNotNull(Preconditions.java:32)
                                                                 at exp.privatebank.di.DaggerMainComponent$Builder.appComponent(DaggerMainComponent.java:110)
                                                                 at exp.privatebank.view.activity.MainActivity.setupComponent(MainActivity.java:58)
                                                                 at exp.privatebank.common.BaseActivity.onCreate(BaseActivity.java:19)
                                                                 at exp.privatebank.view.activity.MainActivity.onCreate(MainActivity.java:38)
                                                                 at android.app.Activity.performCreate(Activity.java:5372)
                                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)
                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
                                                                 at android.app.ActivityThread.access$700(ActivityThread.java:159) 
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
                                                                 at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                 at android.os.Looper.loop(Looper.java:176) 
                                                                 at android.app.ActivityThread.main(ActivityThread.java:5419) 
                                                                 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:1046) 
                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
                                                                 at dalvik.system.NativeStart.main(Native Method) 

0 个答案:

没有答案