gpt4 book ai didi

android - Dagger 2 错误 : android. content.Context cannot be provided without an @Provides-annotated method

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:04 24 4
gpt4 key购买 nike

我正致力于在我的项目中实现 Dagger 2。为此,我编写了以下代码行:

@Inject
VideoControllerView mediaController;

@Module
public class PlayerModule {

@Provides
VideoControllerView providesVideoControllerView(Context context, VideoControllerView.Controlers cntrls) {
return new VideoControllerView(context, cntrls);
}
}


@Component(modules = PlayerModule.class)
public interface PlayerComponent {
VideoControllerView getVideoControllerView();
}

但是当我尝试编译我的应用程序时,出现以下错误:

Error:(14, 25) error: android.content.Context cannot be provided without an @Provides-annotated method.
android.content.Context is injected at
com.multitv.multitvplayersdk.module.PlayerModule.providesVideoControllerView(context, …)
com.multitv.multitvplayersdk.controls.VideoControllerView is provided at
com.multitv.multitvplayersdk.component.PlayerComponent.getVideoControllerView()

我四处寻找如何解决这个问题,但无济于事。请帮助我。

最佳答案

请尝试理解错误。

PlayerModule.providesVideoControllerView(context, …) 需要上下文,但是 Dagger 无法访问任何 Context 对象,因此它不能传入任何 Context 。因此它会产生错误,告诉您它找不到任何 Context 并且您应该为其添加一种方法。

Context cannot be provided without an @Provides-annotated method.

因此...如果没有 @Provides 注释方法,则无法提供 context


确保您的 PlayerModule 所属的组件可以访问上下文。

要么使它成为您的 ApplicationComponent 的子组件,将 Context 添加到您的 PlayerModule,将您的 Activity 实例绑定(bind)为 Context,等等

有很多方法可以做到这一点,但最终您需要在您的模块之一中使用如下方法:

@Provides Context provideContext() { return myContext; }

一旦 Dagger 可以找到 Context,错误就会消失。

关于android - Dagger 2 错误 : android. content.Context cannot be provided without an @Provides-annotated method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44363189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com