Splash Presenter가 null로 반환 된 이유를 이해하는 데 도움이 필요합니다. 나는 깨끗한 건축을 따르고있다.단검 2 : 발표자가 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입니다. 여기
는@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에서 내가
를 다음을 수행하고 내 LoginComponent@PerActivity
@Component(dependencies = ApplicationComponent.class, modules = {ActivityModule.class, LoginModule.class})
public interface LoginComponent extends ActivityComponent {
}
가 여기에 로그인 모듈하는 활동 구성 요소 여기
@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;
}
}
입니다
SplashActivity
내 발표자 널 왜아직도 나는 여기에 내 스플래쉬 발표자
loginComponent
의 인스턴스가
inject method
후 생성
@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