Нужна помощь в понимании того, почему Splash Presenter возвращается как null. Я следую чистой архитектуре.Кинжал 2: Presenter is null
public class SplashActivity extends BaseActivity implements HasComponent<LoginComponent> {
@Inject
SplashPresenter splashPresenter;
private LoginComponent loginComponent;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
//setContentView(R.layout.spla);
this.initializeInjector();
if (savedInstanceState == null) {
// addFragment(R.id.fragmentContainer, new UserListFragment());
}
splashPresenter.initialize();
}
private void initializeInjector() {
this.loginComponent = DaggerLoginComponent.builder()
.applicationComponent(getApplicationComponent())
.activityModule(getActivityModule())
.loginModule(new LoginModule())
.build();
}
@Override
public LoginComponent getComponent() {
return loginComponent;
}
}
В моей деятельности SplashPresenter всегда имеет значение null.
Вот Компонентный активность
@PerActivity
@Component(dependencies = ApplicationComponent.class, modules = ActivityModule.class)
public interface ActivityComponent {
//Exposed to sub-graphs.
Activity activity();
}
@Module
public class ActivityModule {
private final Activity activity;
public ActivityModule(Activity activity) {
this.activity = activity;
}
/**
* Expose the activity to dependents in the graph.
*/
@Provides @PerActivity Activity activity() {
return this.activity;
}
}
Вот мой LoginComponent
@PerActivity
@Component(dependencies = ApplicationComponent.class, modules = {ActivityModule.class, LoginModule.class})
public interface LoginComponent extends ActivityComponent {
}
Здесь LoginModule
@Module
public class LoginModule {
private User user;
public LoginModule(){}
public LoginModule(User user){this.user = user;}
@Provides
LoginRepository provideLoginRepository(LoginDataRepository loginRepository) {
return loginRepository;
}
@Provides
@PerActivity
@Named("isUserLoggedIn")
UseCase provideIsUserLoggedInUseCase(IsUserLoggedIn isUserLoggedIn){
return isUserLoggedIn;
}
@Provides
@PerActivity
@Named("login")
UseCase provideLoginUseCase(LoginRepository loginRepository, ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread){
return new Login(user,loginRepository,threadExecutor,postExecutionThread);
}
@Provides
@PerActivity
@Named("logOut")
UseCase provideLogoutUseCase(LoginRepository loginRepository, ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread){
return new LogOut(user,loginRepository,threadExecutor,postExecutionThread);
}
}
В BaseActivity я делаю следующее
public abstract class BaseActivity extends Activity {
@Inject Navigator navigator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getApplicationComponent().inject(this);
}
protected ActivityModule getActivityModule() {
return new ActivityModule(this);
}
}
Тем не менее я не могу понять, почему мой ведущий нуль в SplashActivity
Вот мой Всплеск Presenter
@PerActivity
public class SplashPresenter implements Presenter {
private final UseCase isUserLoggedIn;
private SplashView splashView;
@Inject
public SplashPresenter(@Named("isUserLoggedIn") UseCase isUserLoggedIn) {
this.isUserLoggedIn = isUserLoggedIn;
}
}
Вы нашли решение на этом? Такая же проблема здесь :( – Zain
Пожалуйста, пост решение, если вы смогли успешно решить эту проблему. – Talha