Java Dagger 2错误:如果没有@inject构造函数或@Providers注释方法,则无法提供

Java Dagger 2错误:如果没有@inject构造函数或@Providers注释方法,则无法提供,java,android,dagger,dagger-2,Java,Android,Dagger,Dagger 2,我对dagger2完全陌生,希望能帮助我:) 我正在实现一个小演示,但我发现以下错误: 错误:(20,10)错误:如果没有@InjectBuilder或@products-Provides--annotated方法,则无法提供android.net.ConnectivityManager。 com.edwin.dagger1.MainActivity.ConnectionManager [类型的注入字段:android.net.ConnectivityManager ConnectivityMa

我对dagger2完全陌生,希望能帮助我:)

我正在实现一个小演示,但我发现以下错误: 错误:(20,10)错误:如果没有@InjectBuilder或@products-Provides--annotated方法,则无法提供android.net.ConnectivityManager。 com.edwin.dagger1.MainActivity.ConnectionManager [类型的注入字段:android.net.ConnectivityManager ConnectivityManager]

公共类Dagger2Application扩展应用程序{
私有系统组件系统组件;
@凌驾
public void onCreate(){
super.onCreate();
systemComponent=DaggerSystemComponent.builder()
.systemModule(新的systemModule(本))
.build();
}
公共系统组件getSystemComponent(){
返回系统组件;
}
}
@模块
公共类系统模块{
私人最终申请;
公共系统模块(应用程序){
这个应用程序=应用程序;
}
@提供
@独生子女
公共上下文文本(){
退货申请;
@Singleton
@组件(模块=SystemModule.class)
公共接口系统组件{
无效注入(主要活动);

}
问题在于注入ConnectionManager类。我修改了一些代码。请看一看,希望这对您有所帮助

public interface IConnectivityManager {
    boolean getActiveNetworkMetered();
}


public class IConnectivityManagerImpl implements IConnectivityManager {

    private Context context;

    public IConnectivityManagerImpl(Context context) {
        this.context = context;
    }

    @Override
    public boolean getActiveNetworkMetered() {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        return connectivityManager.isActiveNetworkMetered();
    }
}
主课

 @Inject
    IConnectivityManager connectivityManager;
 boolean activeNetworkMetered = connectivityManagers.getActiveNetworkMetered();
        Log.d("Network is metered? " , activeNetworkMetered+"");
SystemModule.class

   @Provides
    @Singleton
    public IConnectivityManager provideConnectivity(Context context){
        return new IConnectivityManagerImpl(context);
    }

问题在于注入ConnectionManager类。我修改了一些代码。请看一下,希望这对您有所帮助

public interface IConnectivityManager {
    boolean getActiveNetworkMetered();
}


public class IConnectivityManagerImpl implements IConnectivityManager {

    private Context context;

    public IConnectivityManagerImpl(Context context) {
        this.context = context;
    }

    @Override
    public boolean getActiveNetworkMetered() {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        return connectivityManager.isActiveNetworkMetered();
    }
}
主课

 @Inject
    IConnectivityManager connectivityManager;
 boolean activeNetworkMetered = connectivityManagers.getActiveNetworkMetered();
        Log.d("Network is metered? " , activeNetworkMetered+"");
SystemModule.class

   @Provides
    @Singleton
    public IConnectivityManager provideConnectivity(Context context){
        return new IConnectivityManagerImpl(context);
    }