为什么此错误显示在Dagger 2中找到了一个依赖周期

时间:2018-07-23 08:12:23

标签: android

错误如下

  

错误:(32,26)错误:找到了一个依赖循环:   com.d2u.android.data.network.LoopJNetworkManager在以下位置注入   com.d2u.android.di.module.ApplicationModule.provideNetworkManager(loopJNetworkManager)   com.d2u.android.data.network.LoopJNetworkManager在以下位置注入   com.d2u.android.data.network.LoopzPostRequestHandler。(…,loopJNetworkManager)   com.d2u.android.data.network.LoopzPostRequestHandler注入在   com.d2u.android.di.module.ApplicationModule.provideLoopzPostHandler(loopzPostRequestHandler)   com.d2u.android.data.network.RequestHandlerHelper提供于   com.d2u.android.di.component.ApplicationComponent.getRequestHandlerHelper()

@PerActivity
public interface RequestHandlerHelper {

    LoopzPostRequestHandler getPostHandler();

}``
@Singleton
public class LoopzPostRequestHandler implements RequestHandlerHelper {

    private final Context context;
    LoopJNetworkManager loopJNetworkManager;


    @Inject
    LoopzPostRequestHandler(@ApplicationContext Context context, LoopJNetworkManager loopJNetworkManager) {
        this.context = context;
        this.loopJNetworkManager = loopJNetworkManager;
    }

    public void hitApiPostMethod(final String requestUrl, final JSONObject requestParams, final ApiCallbackManager onUpdateResponse, final int requestCode) {
        if (requestParams != null)
            Logger.LogError("REQUEST_" + requestCode, requestParams.toString());

        StringEntity stringEntity = null;
        try {
            stringEntity = new StringEntity(requestParams.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        AsyncHttpClient client = loopJNetworkManager.getAsyncHttpClient();
        Logger.LogError("REQUEST_URL...", ApiRequestConstant.BASE_URL + requestUrl);
        client.post(context, ApiRequestConstant.BASE_URL + requestUrl, stringEntity, "application/json", new JsonHttpResponseHandler() {

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                super.onSuccess(statusCode, headers, response);
                Logger.LogError("response...", response.toString());
                Logger.LogError("Header...", "  " + headers);

            }

            @Override
            public void onFailure(int statusCode, Header[] headers, String response, Throwable throwable) {
                super.onFailure(statusCode, headers, response, throwable);


            }

            @Override
            public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                super.onFailure(statusCode, headers, throwable, errorResponse);

            }
        });
    }

    @Override
    public LoopzPostRequestHandler getPostHandler() {
        return this;
    }
}
@Singleton
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
    void inject(D2UApplication app);

    @ApplicationContext
    Context context();

    Application application();
    PreferenceHelper getPreferenceHelper();
//    LoopJNetworkManager getNetWorkManager();
    RequestHandlerHelper getRequestHandlerHelper();

}

@Module
public class ApplicationModule {

    private final Application mApplication;

    public ApplicationModule(Application application) {
        mApplication = application;
    }

    @Provides
    @ApplicationContext
    Context provideContext() {
        return mApplication;
    }

    @Provides
    Application provideApplication() {
        return mApplication;
    }

//    @Provides
//    @DatabaseInfo
//    String provideDatabaseName() {
//        return AppConstants.DB_NAME;
//    }
//
//    @Provides
//    @ApiInfo
//    String provideApiKey() {
//        return BuildConfig.API_KEY;
//    }

    //    @Provides
//    @PreferenceInfo
//    String providePreferenceName() {
//        return PreferenceConstant.PREF_NAME;
//    }
//
//
//
    @Provides
    @Singleton
    PreferenceHelper providePreferencesHelper(AppPreferenceHelper appPreferencesHelper) {
        return appPreferencesHelper;
    }

    @Provides
    @Singleton
    LoopJNetworkManager provideNetworkManager(LoopJNetworkManager loopJNetworkManager) {
        return loopJNetworkManager;
    }

    @Provides
    @Singleton
    RequestHandlerHelper provideLoopzPostHandler(LoopzPostRequestHandler loopzPostRequestHandler) {
        return loopzPostRequestHandler;
    }
}

1 个答案:

答案 0 :(得分:0)

该提供者看来:

@Provides
@Singleton
LoopJNetworkManager provideNetworkManager(LoopJNetworkManager loopJNetworkManager) {
    return loopJNetworkManager;
}

...取决于要生成的类型的实例,而该类型不能满足。