iammert / AndroidArchitecture

Recommended architecture by Android
888 stars 192 forks source link

Dependency Injetion issue #3

Closed mssaravanan closed 7 years ago

mssaravanan commented 7 years ago

I have implement your app architecture model in my app ,

Building the app I got below issue in AppComponent class @component.builder is missing setters for required modules or components:

I have compare all code , but didn't find to resolve the issue . help me to find the error . Thanks ..

iammert commented 7 years ago

Can you share your code with me? This app works without error. You should be missing something. @saran2somu

mssaravanan commented 7 years ago

I got error : Error:(23, 5) error: @Component.Builder is missing setters for required modules or components: [iammert.com.androidarchitecture.di.AppModule] Error:(20, 8) error: [dagger.android.AndroidInjector.inject(T)] android.app.Application is bound multiple times: @BindsInstance iammert.com.androidarchitecture.di.AppComponent.Builder iammert.com.androidarchitecture.di.AppComponent.Builder.application(android.app.Application) @Provides @Singleton android.app.Application iammert.com.androidarchitecture.di.AppModule.providesApplication()


I was add new activity named : SplashScreen public class SplashActivity extends AppCompatActivity implements LifecycleRegistryOwner {

@Override
protected void onCreate(Bundle savedInstanceState) {
    AndroidInjection.inject(this);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
     Intent intent =new Intent(SplashActivity.this, MainActivity.class);
    startActivity(intent);
    finish();
}

LifecycleRegistry lifecycleRegistry = new LifecycleRegistry(this);

@Override
public LifecycleRegistry getLifecycle() {
    return lifecycleRegistry;
}

}

I was add below code in ActivityBuilderModule class , @ContributesAndroidInjector abstract SplashActivity splashActivity();

And in AppModule class I was added below code ,

Application mApplication;

public AppModule(Application application) {
    mApplication = application;
}

@Provides
@Singleton
Application providesApplication() {
    return mApplication;
} 
mssaravanan commented 7 years ago

Problem in Appcomponent class , fixed it .. Thanks @iammert