본문 바로가기

Kotlin 강좌 3강 : 심리테스트앱 만들기 - 22/07/07

@hyeon.s2022. 7. 7. 17:56

 

1. main fragment/ 2. question fragment/ 3. selection fragment/ 4. result fragment

유튜브 강좌 : https://youtu.be/M1e2tLnzVPo

워크북

wrap_content : 객체의 크기를 객체의 Content 크기만큼 설정하겠다는 뜻이다.

match_parent: 객체의 크기를 그 부모의 크기만큼 설정하겠다는 뜻이다.

view와 Layout과 관련된 blog: https://codechacha.com/ko/properties/

-  ex) app:layout_constraintTop_toTopOf="parent" 와 같이 constraint layout은 제약을 주는 대상과, 받는 대상의 위치를 to - of로 나타내고 제약을 주는 대상을 “” 사이에 적는다. start 는 왼쪽 end는 오른쪽을 의미한다.

- 원래는 다양한 디바이스에서도 보여지는 크기 차이가 없도록 하기 위해서 view를 dp가 아닌 %로 설정한다. 

- lateinit var : 현재 정의하지않고, 나중에 정의하겠다는 의미이다.  -> 아래와 같이 사용된다.

lateinit var navController:NavController
navController = ~

- nav_graph 탐색구성 :  https://developer.android.com/guide/navigation/navigation-getting-started

트러블슈팅

1. MainActivity에서 NavController를 설정할때 nav_host_fragment를 찾지 못하는 오류 발생. 

navController = nav_host_fragment.findNavController 를 
아래와 같이 바꾸니까 해결됨.
navController = findNavController(R.id.nav_host_fragment)

2. AVD 무한로딩 발생 (waiting for target device to com online)

맨 오른쪽 아래 화살표를 누르고 wipe data를 누르면 해결됨.

 

3. MainFragment에서 btn_next를 찾지못하는 문제 발생

문제상황: XML 파일에서 선언한 id를 Kotlin파일에서 찾지 못하는 문제

MainFragment에 next 버튼을 구현할때 btn_next를 인식하지 못하는 문제가 발생하였다.

코드: btn_next를 클릭시 navController가 mainF-> questionF로 action하는 것을 구현.

해결방법: build.gradle의 plugins에 kotlin-android-extensions 를 추가하면 된다. 

plugins {
    id 'kotlin-android-extensions'
}

 

hyeon.s
@hyeon.s :: 개발로그
목차