Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
236 views
in Technique[技术] by (71.8m points)

java - How to resolve ServiceOrderAdapter cannot be provided without an @Inject constructor or an @Provides-annotated method

I have created a new helper class for ServiceOrderAdapter which is ServiceOrderAdapterDataHelper to make api calls

these two classes are dependent on each other, ServiceOrderAdapter calls ServiceOrderAdapterDataHelper to make an api call and the response from ServiceOrderAdapterDataHelper is sent back to ServiceOrderAdapter.

I get a dagger issue

    e: /Users/xxxxx/Documents/xx/xx-android-app/app/src/main/java/com/xxx/xx/injection/components/AppComponent.java:44: error: [Dagger/MissingBinding] com.xxx.xx.clean.orderslist.serviceorders.view.ServiceOrderAdapter cannot be provided without an @Inject constructor or an @Provides-annotated method. This type supports members injection but cannot be implicitly provided.
public interface AppComponent {
       ^
  A binding with matching key exists in component: com.xxx.xx.injection.components.ActivityComponent
      com.xxx.xx.clean.orderslist.serviceorders.view.ServiceOrderAdapter is injected at
          com.xxx.xx.injection.modules.ServiceOrderModule.serviceOrderAdapterDataHelperProvider(…, serviceOrderAdapter)
      com.xxx.xx.clean.orderslist.serviceorders.domain.ServiceOrderAdapterDataHelper is injected at
          com.xxx.xx.clean.orderslist.serviceorders.view.ServiceOrderAdapter.serviceOrderAdapterDataHelper
      com.xxx.xx.clean.orderslist.serviceorders.view.ServiceOrderAdapter is injected at
          com.xxx.xx.injection.components.ActivityComponent.inject(com.xxx.xx.clean.orderslist.serviceorders.view.ServiceOrderAdapter) [com.xxx.xx.injection.components.AppComponent → 

com.xxx.xx.injection.components.ActivityComponent]

In serviceOrdeModule i tried to add this but that did not work

@Provides @PerApp
ServiceOrderAdapterDataHelper serviceOrderAdapterDataHelperProvider(
    FuelOrderOfflineAcceptUseCase fuelOrderOfflineAcceptUseCase,
    ServiceOrderAdapter serviceOrderAdapter
) {
    return new ServiceOrderAdapterDataHelper(fuelOrderOfflineAcceptUseCase, serviceOrderAdapter);
}

ServiceOrderAdapter

@PerApp
public class ServiceOrderAdapter extends ArrayAdapter<ServiceOrder> {
      @Inject
    ServiceOrderAdapterDataHelper serviceOrderAdapterDataHelper;

private void executeFuelOrderOfflineAcceptUseCase(ViewHolder viewHolder, FuelOrder fuelOrder, TimestampedAction action) {
  serviceOrderAdapterDataHelper.executeFuelOrderOfflineAcceptUseCase(fuelOrder, action);
}

 public void fuelOrderOfflineAcceptUseCaseSuccess(GenericResponse response, FuelOrder fuelOrder, ViewHolder viewHolder) {
        if (response.getSuccess()) {
            // Set the current fuel activity
            getApp().getFuelOrderStateMachine().setCurrentServiceOrder(fuelOrder);

            // Move on to the next screen in the fuel activity state machine
            getApp().getFuelOrderStateMachine().trigger(FuelOrderStateMachine.Events.onAcceptedJob);
        } else {
            viewHolder.hideLoader();
            app.getServiceOrderBus().post(new ServiceOrderAcceptingEvent(false));
        }
    }
}

ServiceOrderAdapterDataHelper

@PerApp
class ServiceOrderAdapterDataHelper @Inject constructor(
    private val fuelOrderOfflineAcceptUseCase: FuelOrderOfflineAcceptUseCase,
    private val serviceOrderAdapter: ServiceOrderAdapter
) {

    fun executeFuelOrderOfflineAcceptUseCase(fuelOrder: FuelOrder, action: TimestampedAction) {
        try {
            fuelOrderOfflineAcceptUseCase(FuelOrderOfflineAcceptUseCase.Params(fuelOrder.id, action)) {
                serviceOrderAdapter.fuelOrderOfflineAcceptUseCaseSuccess(fuelOrder)
                serviceOrderAdapter.testFunction()
            }
        } catch (exception: Exception) {
            //serviceOrderAdapter.erroneousState(fuelOrder, viewHolder, exception)
        }
    }
}

How can i fix this error please

thank you for your suggestions R


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...