* Logcat
에러는 크게 3가지로 나뉨
- 문법적인 에러(Syntax Error) : 실행 안 됨(빨간줄), 수정 가능
- 논리적인 에러(Logical error) : 로그를 직접 찍어서 어느 부분에서 잘못되었는지 확인(Log.d를 작성하여 로그캣으로 확인)
- 런타임 에러(Run Time error) : 로그캣으로 직접 확인
-> 에러 중에 Cause by(원인) 내용 중 내가 쓴 코드를 확인하면 됨(제일 상단에 있는 내용 확인)
—> 오류 명칭을 직접 구글링해도 됨
Try-catch를 통해 에러가 떠도 멈추지 않고 catch의 내용만 나오고 넘어가도록 설정 가능
무슨 오류인지는 모를 때 catch에 Exception을 작성해서 모든 오류를 퉁치게 할 수 있음
Catch 뒤에 finally를 추가로 작성해서 에러 유무 상관없이 메시지 출력 가능
Log의 기본적인 구성은 (태그, 메시지)
태그 : 속해있는 파일명이나 제목을 작성
메시지 : 확인하고자 하는 출력 내용
Log 종류
Log.d : 일반적으로 로그를 확인할 때 거의 사용
Log.i , Log.w : 이 둘은 거의 안 씀
Log.e : 눈에 띄게 확인하기 위해서 사용
Log.wtf : e와 동일
Log에서 특정 메시지만 확인하고 싶다 -> 메시지에 자기만의 문자를 작성하여 해당 문자를 이용하여 필터링
우측에 Ignore Tag를 누르면 특정 태그는 제외해서 보여줌
태그는 밖으로 빼서 전역 선언하는 걸 추천
* 전역은 현재 파일 범위에서 전부 사용하겠다는 걸 의미
Companion object {
private const val TAG = “SingInActivity”
}
- 애뮬레이터 제어 기능 : … 찍으면 가상의 카메라, 위치, 배터리 설정, 전화 등이 가능함
- 디바이스 매니저 : file explorer를 통해 다운로드 된 이미지 위치를 찾고 가져오거나 또 생성할 수도 있음
* 스코프 함수
apply
run : apply와 비슷하지만 apply와 달리 내부에서 바로 작성이 가능함
With : with(member){println(${name})} —> println(“${member.name}”)과 동일
also
Let : null이 아닐 경우 let 내용이 출력
* Constraint Layout
- 위젯간의 관계 설정
- weight를 이용하여 위젯의 크기 비율을 설정함
- Chain style packed를 하여 위젯 두 개를 중앙으로 두도록 설정할 수 있음
—> 위젯 두 개를 ctrl 누른 채로 두 개 클릭 후 우클릭해서 chain(수직, 수평 원하는 걸로) 후 packed로 설정