본문 바로가기
5번 프로그래밍

안드로이드 스튜디오 - Udacity 챕터2, 3장 19절. Exercise Adding Safe Arguments 안전한 인수 추가

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

드디어 피할 수 없는 문제에 오게되었다

 

수업시작전에는 플러그인 업데이트를 하지 않아서 겨우겨우

 

19절까지 오게 되었지만, 이제 이부분을 손보지 않으면 안된다.

 

동영상 강의 내용을 먼저보자

 

동영상 강의 2분 27초에서 build.gradle(project)에

 

classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$version_navigation"

 

동영상 강의 2분 38초에서 build.gradle(module)에

 

apply plugin: 'kotlin-kapt'

apply plugin: 'androidx.navigation.safeargs'

 

각각의 내용을 플러그인을 적용해 준다.

 

일단 이부분은 기본적으로입력이 되어있었기 때문에 건들 필요가 없다.

 

아니 건들면 안된다.

 

타자연습을 겸해서 기존에 코드를 지우고 직접 타이핑 했으나

 

오타가 나오지 않아도 에러가 발생한다.

 

하는 수 없이 컨트롤 + z로 삭제 이전까지 돌아가서 적용을 다시 눌러주었다.

 

챕터2 3장을 들어오면서 우리를 괴롭히번 플러그인 업데이트가 활성화 된 것을 알 수있다.

 

문제가 있다면 19절까지 오면서 이부분을 해결하지 못하였다.

 

후... 문제가 심각하다 이부분을 어떻게 건들여야 할지 검색해도

무엇가 확실한 해답이 보이진 않는다.

 

하단부에 텍스트 설명문이 있다.

 

 

build.gradle(project)에

 

classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navigationVersion"

( 동영상 강의  => classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$version_navigation")

 

build.gradle(module)에

 

apply plugin: 'kotlin-kapt'

( 동영상 강의 => apply plugin'kotlin-kapt')

 

apply plugin: 'androidx.navigation.safeargs'

( 동영상 강의 => apply plugin'androidx.navigation.safeargs')


입력하라고 하고 있다.

 

build.gradle(project)부분은 $navigationVersion 으로 이부분만 다르고

나머지는 똑같다.

 

과연 수정을 하면 실행이 될까?

 

예상 했던 대로 실행이 되지 않는다.

거기다가 플러그인 업데이트 설명보다 더 많이 에러가 많이 발생한다.

 

Could not get unknown property 'navigationVersion' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

 

파파고 형의 도움을 받아보면 결국은 'navigationVersion'을 가져오지 못하는 것이

문제로 파악이 된다.

 

https://developer.android.com/jetpack/androidx/releases/navigation?hl=ko 

 

Navigation  |  Android 개발자  |  Android Developers

Navigation Navigation은 Android 애플리케이션 내에서 '대상' 사이를 탐색하는 프레임워크로, 대상이 Fragment, Activity 또는 기타 구성요소로 구현되었는지에 관계없이 일관된 API를 제공합니다. 최근 업데

developer.android.com

구글링으로 검색을 하게되면 이전에 플러그인 업데이트를 위해

한시간 소비했던 홈페이지로 사람들이 연결시키고 있다.

 

혹시나 싶어서 지금도 위의 홈페이지에 있는 것으로

바꿀 수있는 부분은 바꿔보았으나

계속해서 반복해서 에러가 발생한다.

 

답이 없으니 또 컨트롤 + z를 눌러서 돌아간다음

실행을 하게되면 또 플러그인 업데이트를 할 것인지 물어본다.

 

플러그인 자체는 그냥 최신버젼을 상요하라는 알림같다.

 

하지만 나는 이전에 이 에러를 많이 반복했기 때문에 이 플러그인을

업데이트 한 다음은 되돌리기가 안되는 것을 안다.

 

두가지를 선택할 수 있다.

 

플러그인 업데이트를 해보는가?

아니면 이 부분은 스킵하고 넘어가는가?

 

내용상으로는 플러그인 업데이트를 하면서 최신화 기능을 써야하는 기능이다.

우선 기본적으로 작성된 내용이 동영상 강의의 내용과 같으니 그대로

수업을 진행해 보겠다.

 

이름을 바꾸는 부분을 하는데 영상이 너무 빨리 지나간다.

 

영시 영어국가에서 영타를 치는게 어렵지 않은가보다,

타자가 상당히 빠른데 동영상은 휙지나가 버린다.

 

view.findNavcontroller().navigate(GameFragmentDirections.actionGameFragmentToGameWonFragment())

 

로 수정을 해주면 된다.

 

그다음 줄에는

 

view.findNavController().navigate(GameFragmentDirections.actionGameFragmentToGameOverFragment2())

수정을 해주면된다.

 

나는 혹시 모를 상황에 대처를 위해서 주석처리를 해주고 타이핑을 새로 했다.

코드가 줄어든 느낌이 없어보인다.

 

3분 22초에서 Arguments를추가하는 것이 나온다.

 

당연히 지금 버젼과 레이아웃이 다르기 때문에 침착하게 찾아야한다.

 

미묘하게 다른 것이 좀 더 짜증이 난다.

 

입력까지는 크게 문제가 없어본인다.

 

최종적으로는 Argument 2개를 동영상과 같이 2개 만들어 주었다.

(네이버 사전 Argument = 논쟁 )

 

그다음 인자를 추가하는 것 같은데

여기서 Fragment를 넘나들고 있으니 주의 해야한다.

 

3분 51초 동영상 강의에서 GameFragment를 수정하고있다.

 

똑같이 코딩을 하면 이렇게 된다.

붐여히 actionGameFragmentToGameWonFragment 부분을 수정해서 밑에 부분도

같이 수정할 줄 알았는데, 수정하는 모습이 나오지 않고

 

Fragment를 이동한다.

 

4분 22초 까지 GameWonFragment를 수정해 준다.

 

타자가 빠르고 화면전환이 빠르기 때문에 주의깊게 봐야한다.

toast.maketext(context,
"NumCorrent:${args.numCorrect}, NumQuestions: ${args.numQuestions}",
Toast.LENGTH_LONG).show()

 

타자치기도 엄힘들고 빨리 지나간다 오타에 신경쓰자.

 

 

여기서 바로 실행을 해보고 성공 했다고 하는데

도대체 뭐가 바뀐건지 모르겠다.

 

실행을 해보자.

 

에러가 발생되면서 실행이 되지 않는다.

똑같이 친다고 친거 같고 오타도 없는데 왜 실행이 안되는 걸까?

 

동영상이 오래되어서 텍스트로 수정을 한듯하다.

 

미묘하게 동영상과는 다르게 되어있다.

오타 때문가 싶어서 복사 붙여넣기를 해주었는데도 붉은 표시로 에러가 난다.

 

열심히 수정을 한 gameFragment에서 오타가 발생핳 듯하다.

혹시나 싶어서 주석처리하고 삭제를 안하기 잘했다.

 

findNavController() 을 써야 하는데 findNavcontroller()로 쓴 듯하다.

오타부터 수정하자!

 

오타를 수정했는데도 알아보지를 못해서 복사 붙여넣기를 해서 비교해보기로 했다.

 

와 『 . 』 / 『 , 』의 차이로 오타가 발생한것이었다.

주의 또 주의 오타가 중요하다.

 

최종 수정 후 진짜 다시 실행을 해보자

 

그래도 실행이 되지 않는다.

 

numCorrect / numQuestions 를 찾지 못하는 것 같다.

 

이부분을 다시 돌아가 보자.

 

에러가 날만하다.

여기서 또 오타가 발생하였다.

 

Argument에 입력해야 할 것은

numCorrect / numQuestions 이것이 맞는 것이다.

 

내가한 오타는

numcorrect / numQoestions  정말 미묘한 오타로 실행이 안되는 것이었다.

문제가 너무 심각해서 말을 잃었다.

 

오타를 겨우겨우 다 주정을 해도 도저히 실행이 되지 않는다

 

이번 강의로 벌써 2시간째다 좀 나왔으면 좋겠다.

 

 

오타를 다 수정했는데도 왜 실행이 안되는가 했는데

코딩 자체가 이상하게 쓰여져 있었다.

 

 

동영상 4분 30초 1차 완료

 

대부분이 오타의 문제였고 내가쓴 코드의 문제였다.

 

플러그인은 그대로 건드리지 않아도 될 것 같다.

 

업데이트를 건들 수 없는 이상 업데이트 쪽은 건들지말자

 

문제를 전부다 맞추게 되면 동영상 강의의 종료 화면처럼

하단부에 무언가가 생겼다가 사라진다.

 

동영상 강의 4분 37초

이번에는 GameOverFragment를 수정하는 부분이다.

마찬가지로 주석처리를 한다음 직접 코딩해주었다.

이어서 마찬가지로 동영상 강의 4분41초

다음은 GameWonFragment를 수정해줄 차례이다.

 

이제 진짜 마지막이 본인다 4분 45초

 

TitleFragment 부분을 수정해 줄 것이다.

 

동영상이 정말 빨리 지나가고

코드가 빠르게 작성되기 때문에 우리는 한눈에 어딜 수정하고 있는지

알아차리는 것만 한세월이 걸린다.

 

사진과 같은 위치의 코드를 수정해 줄것이다.

 

기존의 것은 주석처리를 해주고 다시 코딩을 했습니다.

이번에는 오타를 미리미리 잘 찾았습니다.

 

실행을 해보라고 하는데 동영상은 여기에서 끊어져있다.

실행을 해보도록하자.

 

 

뭐가 바뀐건지 알수가 없다.

 

성공 화면에서 밑에 무언가가 뜨는 것은

아까도 나왓었는데 무슨 차이를 보여주고 모르겠다.

 

다시한번 19절을 반복해서 영상을 볼필요가 있다.

 

지금 걸린 2시간은 전체적으로 오타가 많이 문제였다.

영타 실력도 어느정도는 필요하다.

댓글