인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

toqur70009957's profile image
toqur70009957

asked

Android App Development Anyone Can Do - 1 (Kotlin)

GitHub API

null exception

Written on

·

407

0

똑같이 코드 따라치고 실행을 했는데 

null exception이 나옵니다.

 

java.lang.NullPointerException

        at com.my.githubapi.MainActivity$onCreate$1.onResponse(MainActivity.kt:31)

for(str in response?.body()?.items!!){

어떻게 해결해야되나요?

errorandroidkotlin

Answer 2

0

bokchi님의 프로필 이미지
bokchi
Instructor

확인해보니 문제는 없어보이는데

api.getUsers()

이 부분이 오타가 있는지 확인하기 위해, 이 부분의 스크린샷과

 

이렇게 찍은 로그가 어떻게 나오는지 알려주실 수 있으신가요?

                Log.e("MAINACTIVITY", response?.body()?.items.toString())

 

toqur70009957님의 프로필 이미지
toqur70009957
Questioner

interface API {

@GET(":users?q=himchanyoon")
fun getUsers() : Call<UserData>
}

아 이부분에서 ':' 이부분이 에러였던것 같습니다... 감사합니다 해결하였습니다 :)

0

bokchi님의 프로필 이미지
bokchi
Instructor

안녕하세요 

말 그대로 데이터가 null인 경우입니다.

for(str in response?.body()?.items!!){

여기 위에서

Log.d("DATA", response?.body()?.items!!.toString())

으로 데이터를 한번 확인해보시면 null이 나올겁니다.

어느 주소로 api요청을 하셨는지 전체 코드를 공유해주시면 도움드릴 수 있을 것 같아요 :) 

toqur70009957님의 프로필 이미지
toqur70009957
Questioner

class MainActivity : AppCompatActivity() {

val BASE_URL = "https://api.github.com/search/"

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val retrofit : Retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()

var api = retrofit.create(API::class.java)

var call: Call<UserData> = api.getUsers()

call.enqueue(object : Callback<UserData> {
override fun onResponse(call: Call<UserData>, response: Response<UserData>?) {
// 호출이 실패했을 때 실행되는 코드
Log.e("MAINACTIVITY", response?.body()?.items.toString())

for(str in response?.body()?.items!!){

Log.e("MAINACTIVITY", str.login)
}

}

override fun onFailure(call: Call<UserData>?, t: Throwable?) {
//호출이 성공했을 때 실행되는 코드

}

})

}
}


강의와 똑같이 코드를 실행하였습니다.
toqur70009957's profile image
toqur70009957

asked

Ask a question