Well, I already have had api and created the app but it didn't work. The app keep stopping. I try it in many ways and maybe there's an error or a lack of something I don't know. If you know it, Please tell me.Here's my code:
package com.example.redplanetview.utils
import com.example.redplanetview.data.MarsApiService
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
object ApiConstants {
private const val BASE_URL = "https://api.nasa.gov"
const val API_KEY = "I'll hide it"
private val retrofit: Retrofit by lazy {
Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
val marsApiService: MarsApiService = retrofit.create(MarsApiService::class.java)
}
package com.example.redplanetview.data
import com.example.redplanetview.utils.ApiConstants
import retrofit2.Response
import retrofit2.http.GET
import retrofit2.http.Query
interface MarsApiService {
@GET("mars-photos/api/v1/rovers/curiosity/photos?sol=1000&api_key=DEMO_KEY")
suspend fun getPhotos(
@Query("sol") sol: Int,
@Query("api_key") apiKey: String = ApiConstants.API_KEY
): MarsPhotosResponse
}
package com.example.redplanetview
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.example.redplanetview.data.MarsPhotosData
import com.example.redplanetview.utils.ApiConstants
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
class MarsPhotosViewModel: ViewModel() {
private val apiService = ApiConstants.marsApiService
val marsPhotosState = MutableStateFlow<List<MarsPhotosData>>(emptyList())
fun fetchRoverPhotos(sol: Int) {
viewModelScope.launch {
val response = apiService.getPhotos(sol)
marsPhotosState.value = response.photos
}
}
}
Error here: AndroidRuntime com.example.redplanetview E at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1516) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871) at android.view.Choreographer.doCallbacks(Choreographer.java:683) at android.view.Choreographer.doFrame(Choreographer.java:619) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
fetching Mars Rover Photos in jetpack compose