У меня есть библиотека с абстрактными BaseActivity и BaseApplication, которые расширены в модуле проекта.ApplicationModule и ApplicationComponent существуют в библиотечном модуле, когда я пытаюсь внедрить объект в MainActivity, который расширяет BaseActivity, я получаю исключение нулевого указателя.
Это в библиотечном модуле
@Component(modules = ApplicationModule.class)
@Singleton
public interface ApplicationComponent {
void inject(BaseActivity baseActivity);
@Component.Builder
interface Builder {
@BindsInstance
Builder application(Application application);
ApplicationComponent build();
}
}
Также в библиотечном модуле
@Module
public class ApplicationModule {
@Singleton
@Provides
User provideUser() {
return new User("Unknown","abc@xyz.com");
}
}
Приложение библиотеки
public abstract class BaseApplication extends Application {
private ApplicationComponent mApplicationComponent;
@Override
public void onCreate() {
super.onCreate();
mApplicationComponent = DaggerApplicationComponent
.builder()
.application(this)
.build();
}
public ApplicationComponent getApplicationComponent() {
return mApplicationComponent;
}
}
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((BaseApplication) getApplication()).getApplicationComponent().inject(this);
}
Активность проекта
public class MainActivity extends BaseActivity {
@Inject
User user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
user.setName("New User");
System.out.println("MainActivity user: " + user.getName() + ", email: " + user.getEmail());
}
}
Пользователь возвращает значение NULL, когда я пытаюсь внедрить его в MainActivity, расширяющую BaseActivity.Когда я внедряю пользователя в BaseActivity, он работает нормально.