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 {
}
がここにあるのLoginModuleされるアクティビティコンポーネントここ
@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
である理由を理解することができませんが、私のスプラッシュプレゼンター
@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