我在我的项目中使用 AndroidAnnotations 和 Dagger。
我想通过 Dagger 将 View(通过 AndroidAnnotations 注入到 Activity)注入到其他类中。
现在我有这个代码,但我想ActionBarDrawerToggle
获得@Injection
:
// MainActivity.java
@EActivity(R.layout.activity_main)
public class MainActivity extends ActionBarActivity {
@ViewById
DrawerLayout drawerLayout;
ActionBarDrawerToggle mMainDrawerToggle;
@AfterInject
void daggerInject() {
application.inject(this);
}
@AfterViews
void setupViews() {
mMainDrawerToggle = new ActionBarDrawerToggle(
this,
drawerLayout,
R.drawable.ic_main_drawer,
R.string.main_drawer_open,
R.string.main_drawer_close);
}
}
我做了这样的事情,但它不起作用,因为 Dagger 不知道如何获取 DrawerLayout 对象。
// ApplicationModule.java
@Module(
library = true,
injects = MainActivity_.class
)
public class ApplicationModule {
private final MyApp application;
public ApplicationModule(MyApp application) {
this.application = application;
}
@Provides
ActionBarDrawerToggle provideActionBarDrawerToggle(DrawerLayout drawerLayout) {
return new ActionBarDrawerToggle(
application,
drawerLayout,
R.drawable.ic_main_drawer,
R.string.main_drawer_open,
R.string.main_drawer_close);
}
}
我怎样才能让它ActionBarDrawerToggle
被 Dagger 注入?