是否可以使用Dagger2注入使用Activity对象创建的对象?

时间:2019-08-28 11:36:51

标签: java android dependency-injection dagger-2 dagger

这是我的MainViewModelModule类,我要在其中添加MainActivity对象的创建:

public abstract class MainViewModelModule {
    @Binds
    abstract ViewModelProvider.Factory bindMainViewModelFactory(MainViewModelFactory factory);

    @Binds
    @IntoMap
    @ViewModelKey(MainViewModel.class)
    abstract ViewModel provideMainViewModel(MainViewModel viewModel);

    @Provides
    abstract MainActivity bindMainActivity(); //Create MainActivity object

    @Singleton
    @Provides
    static MyCustomClass provideMyCustomClass(MainActivity mainActivity) {
        return DataBindingUtil.setContentView(mainActivity, R.layout.activity_main);
    }
}

这就是我试图将MyCustomClass对象注入到我的活动类中的方式:

public class MainActivity extends DaggerAppCompatActivity {
    @Inject MainViewModel mainViewModel;
    @Inject MyCustomClass myCustomClass;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Use myCustomClass
    }
}

但是它不起作用。 Android Studio抱怨:

  

错误:@Binds方法必须仅具有一个参数,其类型可以分配给返回类型

有人可以帮助我在MyCustomClass中注入MainActivity对象吗?谢谢

0 个答案:

没有答案