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
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…