相关疑难解决方法(0)

"更喜欢在Kotlin上运行匕首处理器"

每当我注入kotlin类时,我都会在构建中得到这个注释(顺便说一下,我有一个混合的android项目同时使用kotlin和java).

例如,在这个gradle任务之后:compileStagingDebugJavaWithJavac(StagingDebug是我的构建变体),我收到以下消息:

"注意:为com.packageNameXXX.CourseDiscoveryMapFragment生成一个MembersInjector或Factory.更喜欢在该类上运行dagger处理器."

我的CourseDiscoveryMapFragment代码可以在这里看到:

class CourseDiscoveryMapFragment : Fragment(){

    @Inject
    lateinit var presenter: CourseDiscoveryMapPresenter

    lateinit var mapView: MapView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        val view = inflater.inflate(R.layout.fragment_discovery_map, container, false)

        MapsInitializer.initialize(activity)

        mapView = view.mapView
        mapView.onCreate(savedInstanceState?.getBundle(BUNDLE_KEY_MAP_STATE))

        (activity as BaseActivity)
                .activityComponent.inject(this)
}
Run Code Online (Sandbox Code Playgroud)

我的ActivityComponent是:

@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

    //Exposed to sub-graphs.
    Activity activity();
}
Run Code Online (Sandbox Code Playgroud)

所以,我有用Java编写的匕首组件和模块,同时在Kotlin中进行匕首注射.

这是我应该担心的吗?

谢谢.

android kotlin dagger

123
推荐指数
1
解决办法
3926
查看次数

摆脱Dagger 2警告"生成一个MembersInjector"

鉴于以下课程

abstract class AbstractClass {
    @Inject SomeDependency someDependency;
}

class SomeClass extends AbstractClass {
    @Inject AnotherDependency anotherDepenency;

    public void onCreate() {
        component = // Get component instance somehow
        component.inject(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

在Dagger 2中,当将依赖项注入到从包含依赖项的抽象基类扩展的类中时,Dagger Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead.在编译期间显示了该类型的警告.

但是,如果我重写/实现onCreate()AbstractClass并调用依赖注入有,也依赖someDependency将被注入这两次可能会导致意外的行为.一旦onCreate()AbstractClass和一次onCreate()SomeClass.

在防止重复注入依赖项的同时摆脱此警告的最佳解决方案是什么?

java dagger dagger-2

27
推荐指数
1
解决办法
1045
查看次数

标签 统计

dagger ×2

android ×1

dagger-2 ×1

java ×1

kotlin ×1