当前位置: 首页 > 知识库问答 >
问题:

无法提供匕首改装

盖锐进
2023-03-14

承认,匕首是强硬的,我正试图注射改型。我注入了Context和SharedPreferences,它工作得很好,但改型破坏了这一切。它可以识别DaggerRetrofitComponent类,但不能找到DaggerAppComponent。

@Module
public class RetrofitModule {
    public static final String BASE_URL = "http://api.themoviedb.org/3/";
    @Provides
    HttpLoggingInterceptor getHttpLoggingInterceptor(){
        return new HttpLoggingInterceptor();

    }
    @Provides
    OkHttpClient getOkHttpClient(HttpLoggingInterceptor interceptor){
        return new OkHttpClient.Builder().addInterceptor(interceptor).build();
    }
    @Provides
    GsonConverterFactory getGsonConverterFactory(){
        return GsonConverterFactory.create();
    }
    @Provides
    Retrofit getRetrofit(GsonConverterFactory gsonConverterFactory, OkHttpClient client){
        return new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(gsonConverterFactory)
                .client(client).build();
    }
}
public class MyApplication extends Application {
    private static AppComponent appComponent;
    public static AppComponent getAppComponent(){
        return appComponent;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        appComponent=buildComponent();

    }


    protected AppComponent buildComponent(){
        if(BuildConfig.DEBUG){
            Timber.plant(new Timber.DebugTree());
        }

        return DaggerAppComponent.builder().sharedPreferenceModule(new SharedPreferenceModule()).contextModule(new ContextModule(this)).build();


    }
}
@Singleton
@Component(modules = {ContextModule.class, SharedPreferenceModule.class})
public interface AppComponent {
    void inject(MainActivity mainActivity);
}
@Singleton
@Component(modules = {RetrofitModule.class})
public interface RetrofitComponent {
    void injectRetrofit(Activity activity);
//
}
public class MainActivity extends AppCompatActivity {
    @Inject
    Context context;
    @Inject
    SharedPreferences sharedPreferences;
    @Inject
    Retrofit retrofit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DaggerRetrofitComponent.builder().retrofitModule(new RetrofitModule()).build().injectRetrofit(this);
        MyApplication.getAppComponent().inject(this);


    }
}

共有1个答案

费学
2023-03-14

删除此类:

//@Singleton
//@Component(modules = {RetrofitModule.class})
//public interface RetrofitComponent {
//    void injectRetrofit(Activity activity);
//
//}

并修改AppComponent:

@Singleton
@Component(modules = {ContextModule.class, SharedPreferenceModule.class, RetrofitModule.class})
public interface AppComponent {
    void inject(MainActivity mainActivity);
}
 类似资料:
  • 我是新来的,用匕首。所以,我不能解决这个有什么问题。我只想问在这里解决它。 这是错误: c:\ Users \ MSI \ Documents \ MyAndroidProjects \ movie projects \ App \ build \ generated \ hilt \ component _ sources \ debug \ com \ example \ movie App

  • 我是新手,我想在我的课上注入上下文和网络(使用改型)。 这是我到目前为止的代码: 这是我的组件: 但是我如何在应用程序类中使用注入器,这是没有意义的

  • 问题内容: 我是新手,并尝试构建这样的示例以了解其工作原理。 有我的示例代码: 如您在我注入的样本中所见 我也想使用提供值作为此方法的参数。 最终我得到了这样的错误 我究竟做错了什么? 我应该如何以正确的方式提供此参数以避免此类错误? 问题答案: 您需要使用 限定符注释 并在注入依赖时使用此限定符 希望能帮助到你!另请查看官方文档-http: //google.github.io/dagger/

  • 我不熟悉匕首和莫基托。我尝试在单元测试中使用Dagger模块中定义的构造函数,以便使用默认值创建对象。 这是模块: @模块类自动关闭倒计时模块{ 这就是我在单元测试中模拟AutoCloseCountDown类的方法: @RunWith(MockitoJUnitRunner.class)公共类AutoCloseCountDownTimerTest{ 如何实现自动关闭的CountDownTimer将在

  • Dagger 2即将面世,但可用的示例甚至无法立即编译,文档是Dagger 1的复制粘贴替换。 有没有人有一个在谷歌的Dagger 2上运行的正确应用程序的例子?

  • 我不知道如何使用以下内容显示自定义片段: 类型不匹配:推断的类型是LoginFrament,但预期是片段