Advertisement
onzulin

SuperHeroListActivity.kt con error

Oct 8th, 2024
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 5.73 KB | None | 0 0
  1. FATAL EXCEPTION: DefaultDispatcher-worker-1                                                                                                    Process: com.techcomputerworld.examples, PID: 6394                                                                                                    kotlin.UninitializedPropertyAccessException: lateinit property retrofit has not been initialized                                                                                                       at com.techcomputerworld.examples.superheroapp.SuperHeroListActivity$searchByName$1.invokeSuspend(SuperHeroListActivity.kt:67)                                                                                                    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)                                                                                                     at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)                                                                                                     at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)                                                                                                       at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)                                                                                                      at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)                                                                                                        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)                                                                                                    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)                                                                                                    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)                                                                                                       Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@84a5897, Dispatchers.IO]
  2. El codigo de mi clase principal:
  3. package com.techcomputerworld.examples.superheroapp
  4.  
  5. import android.os.Bundle
  6. import android.util.Log
  7. import androidx.activity.enableEdgeToEdge
  8. import androidx.appcompat.app.AppCompatActivity
  9. import androidx.appcompat.widget.SearchView
  10. import androidx.core.view.ViewCompat
  11. import androidx.core.view.WindowInsetsCompat
  12. import com.techcomputerworld.examples.R
  13. import com.techcomputerworld.examples.databinding.ActivitySuperHeroListBinding
  14. import kotlinx.coroutines.CoroutineScope
  15. import kotlinx.coroutines.Dispatchers
  16. import kotlinx.coroutines.launch
  17. import retrofit2.Response
  18. import retrofit2.Retrofit
  19. import retrofit2.converter.gson.GsonConverterFactory
  20. /*
  21. * Voy a utilizar corutinas que es para utilizar otros hilos al principal para hacer llamadas a la API, tambien se usa para llamar a bases de datos
  22. * O tareas que tengamos que hacer sin bloquear el hilo principal y que la aplicación no se trabe o deje de funcionar bien.
  23. * Para trabajar con multi hilo hay varias maneras una es las corutinas y hay otras maneras.
  24. * */
  25. class SuperHeroListActivity : AppCompatActivity() {
  26.     private lateinit var binding: ActivitySuperHeroListBinding
  27.     private lateinit var retrofit: Retrofit
  28.  
  29.     override fun onCreate(savedInstanceState: Bundle?) {
  30.         super.onCreate(savedInstanceState)
  31.         binding = ActivitySuperHeroListBinding.inflate(layoutInflater)
  32.         setContentView(binding.root)
  33.         enableEdgeToEdge()
  34.         //setContentView(R.layout.activity_super_hero_list)
  35.         /*ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
  36.             val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
  37.             v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
  38.             insets
  39.         }*/
  40.         ViewCompat.setOnApplyWindowInsetsListener(binding.main) { v, insets ->
  41.             val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
  42.             v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
  43.             insets
  44.         }
  45.         initUI()
  46.     }
  47.  
  48.     private fun initUI() {
  49.         binding.searchView.setOnQueryTextListener(object: SearchView.OnQueryTextListener
  50.         {
  51.             override fun onQueryTextSubmit(query: String?): Boolean {
  52.                 searchByName(query.orEmpty())
  53.                 return false
  54.             }
  55.  
  56.             override fun onQueryTextChange(newText: String): Boolean {
  57.                 return false
  58.             }
  59.             /* se puede dejar tal que así.
  60.             override fun onQueryTextChange(newText: String?) = false
  61.             */
  62.  
  63.         })
  64.  
  65.     }
  66.     private fun searchByName(query: String) {
  67.         //todo lo que se ejecute dentro de este codigo CorutineScope, y le hemos dicho que se ejecute en otro hilo IO
  68.         CoroutineScope(Dispatchers.IO).launch {
  69.             val myResponse : Response<SuperHeroDataResponse> = retrofit.create(ApiService::class.java).getSuperheroes(query)
  70.             if (myResponse.isSuccessful){
  71.                 Log.i("TCW", "funciona")
  72.             }else {
  73.                 Log.i("TCW", "no funciona :(")
  74.             }
  75.         }
  76.     }
  77.     private fun getRetrofit(): Retrofit {
  78.         //crear el objeto Retrofit
  79.         return Retrofit.Builder()
  80.             .baseUrl("https://superheroapi.com/")
  81.             .addConverterFactory(GsonConverterFactory.create())
  82.             .build()
  83.         //return retrofit
  84.     }
  85. }
  86.  
  87.  
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement