Невозможно внедрить код Java в компоненты зависимостей Kotlin.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Невозможно внедрить код Java в компоненты зависимостей Kotlin.

Сообщение Anonymous »

Используя последнюю версию для Dagger 2,

Код: Выделить всё

    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"
Я не могу внедрить объекты из активности с помощью Dagger 2, компоненты и модули внедрения зависимостей написаны на Kotlin.

Код: Выделить всё

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);

}
Базовая активность в коде Kotlin

Код: Выделить всё

    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
}
Компоненты в коде Kotlin

Код: Выделить всё

@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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»