I am trying to create a tab layout . So,I am trying to inject an instance of FragmentManager to pass into the constructor of the ViewPagerAdapter. While doing this I'm getting this Error:
Error:(16, 10) error: android.app.FragmentManager cannot be provided without an @Provides- or @Produces-annotated method. android.app.FragmentManager is injected at example.XYZ.com.tabsdagger.MainActivity.fragmentManager example.XYZ.com.tabsdagger
AppModule:
@Module
public abstract class AppModule {
@ContributesAndroidInjector(modules = MainActivityModule.class)
abstract MainActivity mainActivity();
@Provides
@Singleton
static Context getContext(Application application){
return application.getApplicationContext();
}
}
AppComponent:
@Singleton
@Component(modules = {MainActivityModule.class, AppModule.class})
public interface AppComponent {
void inject(MainActivity mainActivity);
@Component.Builder
interface Builder {
AppComponent build();
@BindsInstance
Builder buildapp(Application application);
@BindsInstance
Builder mainActivityBuilder(MainActivity mainActivity);
}
}
MainActivityModule:
<pre>@Module
public abstract class MainActivityModule {
@Provides
static FragmentManager getFragmentManager(MainActivity mainActivity) {
return mainActivity.getSupportFragmentManager();
}
}
MyTabApplication:
public class MyTabApplication extends Application {
@Inject
MainActivity mainActivity;
private static AppComponent appComponent;
public static AppComponent getAppComponent(){
return appComponent;
}
@Override
public void onCreate() {
super.onCreate();
appComponent=buildMyComponent();
}
private AppComponent buildMyComponent() {
return DaggerAppComponent.builder().buildapp(this).mainActivityBuilder(new MainActivity()).build();
}
}
0 Answer(s)