본문 바로가기
5번 프로그래밍/Kotlin, 안드로이드 스튜디오

안드로이드 스튜디오 - Udacity 챕터2, 3장 9절 Exercise : Let's Navigate Already

by 하늘나는 곰 2021. 6. 24.

강의 내용은 상당히 길게 나오지만 번역이 자연스럽지 않습니다.

크게 문제 되는 것은 없는데 오타가 많이 발생합니다.

 

1분 50초 구간에서 activity_main에 fragment를 수정하는 것이 나옵니다.

 

<!-- The NavHostFragment within the activity_main layout -->

<fragment android:id="@+id/myNavHostFragment"

android:name="androidx.navigation.fragment.NavHostFragment"

android:layout_width="match_parent"

android:layout_height="match_parent"

app:navGraph="@navigation/navigation"

app:defaultNavHost="true" />

 

이 부분의 코드를 손으로 져야하는데 대문자와 소문자가 많이 나옵니다.

저는 app: defaultNavHost = "true" 부분에서 오타계속 발생하여

진도가 1시간 지연 되었습니다.

 

이전 7장까지 진행이 되었다면 여기서 갑자기 실행이 되는 일은

없을 것 같으나 오류가 발견된다면 우선 오타 검수를

먼저 하는 것이 좋을 것 같습니다.

오타가 한눈에 보이시나요?

붉은색으로 표시가 안뜨기 때문에 한눈에 보이지 않습니다.

 

app: defautnavHost = "ture" 작성했었습니다.

가상 에뮬레이터를 실행하면

 

Execution failed for task ':app:processDebugResources'.

오류가 발생 했었습니다.

 

1차 오타 발견 : true를 해야하는 ture로 했습니다.실행 에러

 

2차 오타 발견 : 2차 오타로 NavHost 를 해야하는데 소문자 n을 썼고실행 에러

 

3차 오타 발견 : detault에서 l이 빠졌고

실행됨

 

위 사진은 오타가 없는 것입니다.

오타가 없어도 붉은 색으로 표시가 안나고, 오타가 있어도 붉은색으로 표시가 없기 때문에

잘 살펴 보아야합니다.

 

 

4분 53초에서 메인화면에서 Play 버튼 누르면 다음화면으로 넘어갈 수 있게

만들어 주는 코딩작업을 하는 중입니다.

 

//The complete onClickListener with Navigation

binding.playButton.setOnClickListener { view: View -> view.findNavController().navigate(R.id.action_titleFragment_to_gameFragment) }

 

여기까지는 크게 문제가 없이 실행이 될 것이라고 생각합니다.

문제는 그 다음 부터입니다.

 

동영상 강의 시간으로 5분 37초에서

kotlin전용으로 코드를 바꿔본다고 하면서 바꾸는작업을 합니다.

 

Navigation.findNavController(view).navigate(R.id.action_titleFragment_to_gameFragment)

이 문장을

 

view.findNavController().navigate(R.id.action_titleFragment_to_gameFragment)

이 문장으로 고치는 작업도 여기 포함 되지만

 

5분 52초에서 갑자기 현재 동영상 사진에 보이는 35줄이

Navigation.createNavigateOnClickListener(R.id)까지

작성 도중에 동영상이 갑자기 뚝 끊어지고 이어집니다.

 

 

//The complete onClickListener with Navigation using createNavigateOnClickListener binding.playButton.setOnClickListener( Navigation.createNavigateOnClickListener(R.id.action_titleFragment_to_gameFragment))

 

솔루션에서 이 붉은색 영역까지 작성 후 끊어지는 것입니다.

 

솔루션과 같이 .action_titleFragment_to_gameFragment까지 작성을 해주어야합니다.

 

 

그리고 55초의 뚝끊어진 다음 재생되는 영상에는

 

 { view: View ->

view.findNavController().navigate(R.id.action_titleFragment_to_gameFragment) }

 

부분이 삭제 되어있습니다.

 

저는 이것을 한눈에 알아보지 못해서 뭐가 어떻게 바뀐건지 살펴보다가 시간을 많이 보냈습니다.

 

동영상과 같이 작성했던 문장에서 수정을 하는 것이 아니라,

주석처리를 한 후에 새로 작성을 했더니

어디가 어떻게 삭제되었는가 보였습니다.

 

최종적으로는 제가 작성한 것을 기준으로 40번째 줄에 있는

『 view.findNavController().navigate(R.id.action_titleFragment_to_gameFragment) 』

부분까지 삭제되어야 하는 것입니다.

 

소괄호 (), 중괄호 {} 부분이 막없어지다 보니 어디가 어떻게 변했는지

눈에 확 들어오지 않습니다.

 

동영상 강의가 친절하지 않으니 주의해서 보셔야합니다.

 

최종적으로는 이렇게 되었습니다.

 

 

댓글