Kotlinインターフェイスをインスタンス化できません!インターフェイス名:kotlinx.coroutines.Deferred

ルイス・カルドーサ鳥

KoinとRetrofitでMVVMを使用しているAndroidアプリに取り組んでいます。

突然、次のようなエラーが表示され続けます

インターフェイスをインスタンス化できません!インターフェイス名:kotlinx.coroutines.Deferred

しかし、どこに問題があるのか​​わかりません。

現在の構造はこれです。

ViewModel。

class ExchangeRateBanksViewModel (private val comercialBanksRepository: ComercialBanksRepository): ViewModel() , KoinComponent{

    private val _uiState = MutableLiveData<CredentialsDataState>()
    val uiState: LiveData<CredentialsDataState> get() = _uiState

    init {
        viewModelScope.launch {
            runCatching {
                emitUiState(showProgress = true)
                comercialBanksRepository.getExchangeRateByToday()
            }.onSuccess {root ->
                val nameMap: MutableList<ExchangeRate> = root.data.map { it }.toMutableList()
                emitUiState(result = Event(nameMap))
            }.onFailure {
                println(it.printStackTrace())
            }
        }
    }

    private fun emitUiState(showProgress: Boolean = false, result: Event<List<ExchangeRate>>? = null, error: Event<Int>? = null){
        val dataState = CredentialsDataState(showProgress, result, error)
        _uiState.value = dataState
    }

    data class CredentialsDataState(val showProgress: Boolean, val result: Event<List<ExchangeRate>>?, val error: Event<Int>?)
}

インターフェース

interface ComercialBanksInterface {
    @GET("api/commercialBankExchangeRates/date/today")
    suspend fun requestExchangeRateToday(): Deferred<RootExchangeRate>
}

レポジトリ。

interface ComercialBanksRepository {
    suspend fun getExchangeRateByToday(): RootExchangeRate
}

class ComercialBanksRepositoryImplement(val comercialBanksService: ComercialBanksInterface): ComercialBanksRepository{
    override suspend fun getExchangeRateByToday(): RootExchangeRate {
        return comercialBanksService.requestExchangeRateToday().await()
    }
}

そして最後に、viewModelを呼び出すセクション。

exchangeRateBanksViewModel.uiState.observe(this, Observer {
            val dataState = it ?: return@Observer
            if (!dataState.showProgress) displayHideSkeleton(hide = true) else displayHideSkeleton(hide = false)
            if (dataState.result != null && !dataState.result.consumed){
                dataState.result.consume()?.let { result ->
                    println("RESULT: ${result}")
                    exchangeRateAdapter.submitList(result)
                }
            }
            if (dataState.error != null && !dataState.error.consumed){
                dataState.error.consume()?.let { error ->
                    Toast.makeText(applicationContext, resources.getString(error), Toast.LENGTH_LONG).show()
                }
            }
        })

インターフェイスのどの部分に問題があるのか​​わかりません...

92AlanC

Retrofitはすでにサスペンド関数を処理しているため、を返す必要はありませんDeferred戻るだけでRootExchangeRate、それだけです。

また、リポジトリの関数も一時停止可能である必要があり、ビューモデルはLiveDataを返す必要があり、そこでアクティビティ(またはフラグメント)がそれを監視します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Coroutines: run a Deferred on a specific CoroutineContext

分類Dev

Retrofit 2.6.0例外:java.lang.IllegalArgumentException:kotlinx.coroutines.Deferredの呼び出しアダプターを作成できません

分類Dev

インポートkotlinx.coroutines.flow。*が見つかりません

分類Dev

ChurchでDeferredタイプをエンコードする方法は?

分類Dev

Laravel 5-インターフェイスはインスタンス化できません

分類Dev

インターフェイスをインポートできません

分類Dev

'インターフェイスのインスタンスを作成できません' -EFPlusIncludeFilterのエラー

分類Dev

MVC5のインターフェイスの問題 'インターフェイスのインスタンスを作成できません'

分類Dev

golangはマップに反映できません[インターフェイス{}]インターフェイス{}

分類Dev

インターフェイスのインスタンスを作成できません。IPagedList

分類Dev

インターフェイスのスライスを空のインターフェイスタイプ関数に渡すことができません

分類Dev

FirestoreWebインターフェイスでアレイを作成できません

分類Dev

タイプのインスタンスを作成できませんでした。タイプはインターフェイスまたは抽象クラスであり、インスタンス化できません

分類Dev

インターフェイスでタイプを逆シリアル化できません

分類Dev

タイプタイプをDoのスーパーインターフェイスにすることはできません。スーパーインターフェースはインターフェースでなければなりません

分類Dev

タイプはインターフェイスまたは抽象クラスであり、インスタンス化できません

分類Dev

スレッド「メイン」の例外java.lang.IllegalArgumentException:インタフェースorg.springframework.context.ApplicationListenerをインスタンス化できません

分類Dev

Kotlin Coroutines with timeout

分類Dev

Multithreading using Kotlin Coroutines

分類Dev

インスタンスのタイプを、インスタンスがインターフェースを実装するインターフェースのタイプに変換できません

分類Dev

RoomdaoインターフェイスでCompletableを使用できません

分類Dev

Beanクラスをインスタンス化できませんでした:指定されたクラスはインターフェースです

分類Dev

ファクトリパターン-抽象クラスまたはインターフェイスのインスタンスを作成できません

分類Dev

解決された後、jQuery Deferred / Ajaxにフェイルハンドラーを強制的に実行させることはできますか?

分類Dev

タイプ[] Typeとして(タイプインターフェイス{})を使用できません

分類Dev

タイプ[]インターフェイス{}として引数(タイプ[]文字列)を使用できません

分類Dev

[]文字列を[]インターフェイス{}に変換できません

分類Dev

インターフェイスに制約を追加できません

分類Dev

タイプSlidingActivityをMainActivityのスーパーインターフェイスにすることはできません。スーパーインターフェースはインターフェースでなければなりません

Related 関連記事

  1. 1

    Coroutines: run a Deferred on a specific CoroutineContext

  2. 2

    Retrofit 2.6.0例外:java.lang.IllegalArgumentException:kotlinx.coroutines.Deferredの呼び出しアダプターを作成できません

  3. 3

    インポートkotlinx.coroutines.flow。*が見つかりません

  4. 4

    ChurchでDeferredタイプをエンコードする方法は?

  5. 5

    Laravel 5-インターフェイスはインスタンス化できません

  6. 6

    インターフェイスをインポートできません

  7. 7

    'インターフェイスのインスタンスを作成できません' -EFPlusIncludeFilterのエラー

  8. 8

    MVC5のインターフェイスの問題 'インターフェイスのインスタンスを作成できません'

  9. 9

    golangはマップに反映できません[インターフェイス{}]インターフェイス{}

  10. 10

    インターフェイスのインスタンスを作成できません。IPagedList

  11. 11

    インターフェイスのスライスを空のインターフェイスタイプ関数に渡すことができません

  12. 12

    FirestoreWebインターフェイスでアレイを作成できません

  13. 13

    タイプのインスタンスを作成できませんでした。タイプはインターフェイスまたは抽象クラスであり、インスタンス化できません

  14. 14

    インターフェイスでタイプを逆シリアル化できません

  15. 15

    タイプタイプをDoのスーパーインターフェイスにすることはできません。スーパーインターフェースはインターフェースでなければなりません

  16. 16

    タイプはインターフェイスまたは抽象クラスであり、インスタンス化できません

  17. 17

    スレッド「メイン」の例外java.lang.IllegalArgumentException:インタフェースorg.springframework.context.ApplicationListenerをインスタンス化できません

  18. 18

    Kotlin Coroutines with timeout

  19. 19

    Multithreading using Kotlin Coroutines

  20. 20

    インスタンスのタイプを、インスタンスがインターフェースを実装するインターフェースのタイプに変換できません

  21. 21

    RoomdaoインターフェイスでCompletableを使用できません

  22. 22

    Beanクラスをインスタンス化できませんでした:指定されたクラスはインターフェースです

  23. 23

    ファクトリパターン-抽象クラスまたはインターフェイスのインスタンスを作成できません

  24. 24

    解決された後、jQuery Deferred / Ajaxにフェイルハンドラーを強制的に実行させることはできますか?

  25. 25

    タイプ[] Typeとして(タイプインターフェイス{})を使用できません

  26. 26

    タイプ[]インターフェイス{}として引数(タイプ[]文字列)を使用できません

  27. 27

    []文字列を[]インターフェイス{}に変換できません

  28. 28

    インターフェイスに制約を追加できません

  29. 29

    タイプSlidingActivityをMainActivityのスーパーインターフェイスにすることはできません。スーパーインターフェースはインターフェースでなければなりません

ホットタグ

アーカイブ