у аргумента функции
чет дикое) вообще .. это рендж, но рендж между 2мя листами - хз, может у тебя где-то этот оператор переопределен и что-то хитрое делает
а есть тело функции? посмотреть что делают вообще с аргументом
это так android studio дает подсказку на SkuDetailsResponseListener local final fun <anonymous>( billingResult: BillingResult, skuDetailsList: (MutableList<SkuDetails!>?..List<SkuDetails!>?) ): Unit
Этот аргумент какого типа реального? Он из джавы? Обычно студия некоторые джавовские классы пытается так отобразить.
это из BillingClient насколько я понял... Я просто не понимаю что значит такое описание аргумента? Типа может быть MutableList или List ? не понятно
этот откуда ты взял? сконвертил с джавы ?
Студия пытается джавовский тип показать как котлиновский. Иногда выходит такая фигня
Это чужой код, меня попросили поправить если смогу... Насколько я понял это все тянет Gradle: implementation 'com.android.billingclient:billing:3.0.3'
Mutable - значит в таком списке можно добавлять или удалять элементы.
В общем, можно передавать всех, кто реализует List: public interface SkuDetailsResponseListener { void onSkuDetailsResponse(@NonNull BillingResult var1, @Nullable List<SkuDetails> var2); }
Ну да, судя по докам там List, а студия ругается Type mismatch: inferred type is (Mutable)List<SkuDetails!>? but List<SkuDetails> was expected
Значит, котлин не может понять, какой тип вы пытаетесь передать. Похоже, вы ему даете что-то нуллабельное. А зачем?
А почему такое происходит? Там же в интерфейсе четко написано что List, а он видит MutableList
Я не телепат, я не знаю, что вы там написали и как.
Вот интерфейс который декопилит по ctrl+q студия ``public interface SkuDetailsResponseListener { void onSkuDetailsResponse(@NonNull BillingResult var1, @Nullable List<SkuDetails> var2); }`` Тут List...
Спасибо, я это же самое вам отправил чуть раньше. ВЫ САМИ что передаете?
в джаве List изменяемый, т/е в котлине это MutbleList, не знаю поможет ли эта информация
анонимную функцию такого вида billingClient.querySkuDetailsAsync(params.build()) { billingResult, skuDetailsList -> if (billingResult.responseCode == BillingResponseCode.OK) it.onSuccess(skuDetailsList) } ругается на it.onSuccess(skuDetailsList) т.к. onSuccess ждет List. Но там и должен быть лист судя по интерфейсу Можно было бы сделать it.onSuccess(skuDetailsList as List<SkuDetails>) но это как-то неправильно )
Обсуждают сегодня