Код: Выделить всё
implementation 'com.google.dagger:dagger:2.51.1'
annotationProcessor 'com.google.dagger:dagger-compiler:2.51.1'
kapt "com.google.dagger:dagger-compiler:2.51.1"
Код: Выделить всё
public class MainActivity extends BaseActivity {
@Inject permissionHelper permissionHelper;
@Inject MbAppFeature mpAppFeature;
@Inject SharedPref sharedPref;
@Inject ViewMvcFactory viewMvcFactory;
@SuppressLint({"ResourceType", "SuspiciousIndentation"})
@Override
protected void onCreate(Bundle savedInstanceState) {
getInjector().inject(this);
super.onCreate(savedInstanceState);
scanModeNumber = sharedPref.read("scanModeNumber",0);
isFirstRun = sharedPref.read("isFirstRun", true);
}
Код: Выделить всё
open class BaseActivity: AppCompatActivity() {
private val appCompositionRoot get() = (application as CustomApplication).appComponent
val activityComponent by lazy {
DaggerActivityComponent.builder()
.activityModule(ActivityModule(this, appCompositionRoot))
.build()
}
private val controllerComponent by lazy {
DaggerControllerComponent.builder()
.controllerModule(ControllerModule(activityComponent))
.build()
}
public val injector get() = controllerComponent
}
Код: Выделить всё
@Component(modules = [ControllerModule::class])
interface ControllerComponent {
fun inject(activity: MainActivity)
}
@Module
class ControllerModule
(private val activityComponent: ActivityComponent)
{
@Provides
fun activity() = activityComponent.activity()
@Provides
fun layoutInflater()
= activityComponent.layoutInflater()
@Provides
fun sharedPref() = activityComponent.sharedPref()
Вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang. Integer SharedPref.read(java.lang.String, int)' по нулевой ссылке на объект
at (MainActivity.java:147)
Я вижу в компоненте контроллера Dagger, что методы инъекции пусты, любые предложения, как это решить:
Код: Выделить всё
@Override
public void inject(ReadIDActivity activity) {
}
@Override
public void inject(ResultsIDActivity activity) {
}
@Override
public void inject(CertificateHandling activity) {
}
@Override
public void inject(MainActivity activity) {
}
@Override
public void inject(LaunchCheckFragment LaunchCheckFragment) {
}
Gradle версии 8.4
Плагин Gradle 8.3 .1
Java версии 17
Подробнее здесь: https://stackoverflow.com/questions/785 ... components
Мобильная версия