Skip to content

Instantly share code, notes, and snippets.

@cheskos
Forked from anonymous/ActivitiesModule.java
Created August 3, 2018 07:16
Show Gist options
  • Save cheskos/a5a8782927df33d2eb4dbdc8f7047a57 to your computer and use it in GitHub Desktop.
Save cheskos/a5a8782927df33d2eb4dbdc8f7047a57 to your computer and use it in GitHub Desktop.
dagger2 subcomponent
@Module abstract class ActivitiesModule {
@ActivityScope @ContributesAndroidInjector(modules = { MainActivityModule.class })
abstract MainActivity mainActivity();
}
@Singleton @Component(modules = {
RepositoryModule.class, AndroidSupportInjectionModule.class, ActivitiesModule.class
}) public interface MyApplicationComponent extends AndroidInjector<MyApplication> {
@Component.Builder abstract class Builder extends AndroidInjector.Builder<MyApplication> {
}
}
public abstract class BaseActivity extends RxAppCompatActivity {
...
@CallSuper @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
AndroidInjection.inject(this);
super.onCreate(savedInstanceState);
}
...
}
public abstract class BaseFragment extends RxFragment {
...
@CallSuper @Override public void onAttach(Activity activity) {
AndroidSupportInjection.inject(this);
super.onAttach(activity);
}
...
}
public class HomeFragment extends BaseFragment {
@Inject HomePresenter presenter;
}
@ActivityScope public class MainActivity extends BaseActivity implements HasSupportFragmentInjector {
@Inject DispatchingAndroidInjector<Fragment> fragmentInjector;
...
@Override public AndroidInjector<Fragment> supportFragmentInjector() {
return fragmentInjector;
}
}
@Module public abstract class MainActivityModule {
@Provides @Reusable static RxPermissions provideRxPermissions(MainActivity mainActivity) {
return new RxPermissions(mainActivity);
}
@ContributesAndroidInjector abstract HomeFragment homeFragment();
}
@Module public class RepositoryModule {
@Provides @Singleton
public SharedPreferences provideSharedPreferences(MyApplication app) {
return app.getSharedPreferences("default", Context.MODE_PRIVATE);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment