액티비티의 생명주기 액티비티의 생명주기는 액티비티는 처음 생성될 때부터 소멸될 때까지 여러 상태를 가지게 된다. 액티비티는 아래 그림과 같이 5가지 상태로 구성된다. 액티비티에서 총 7가지의 콜백 메소드를 활용해서 로그를 출력하게 된다. 액티비티는 이 콜백 메소드를 통해서 상태를 전환하게 된다. (ex. 액티비티가 초기의 initailize 상태에서 create 상태로 전환되기 위해서는 onCreate 메소드가 호출되어야 한다.) initailize에서 시작한 액티비티가 destroy 상태에 도달하기까지 모든 콜백 메소드가 호출되는 것은 아니다. onCreate()와 onDestroy() 메소드는 액티비티가 처음 생성될 때와 최종적으로 소멸될 때 각각 호출되게 된다. 따라서 다음 두 메소드는 액티비티의 ..
코틀린 기본 사항 더보기 제네릭 클래스를 구성하는 속성 중 일부 속성만 다른 클래스를 만들 때 중복을 줄이기 위해 사용함 데이터 타입을 일반화 하는 것 클래스를 만들 때 데이터 유형을 지정하는 것이 아니라 객체를 생성할 때 데이터 유형을 지정할 수 있도록 함 자리표시자 데이터 타입을 넣기 전 임의로 넣는 데이터 타입 확장 속성/확장 함수 개발에 필요한 모든 함수가 프로그램 안에 내장되어 있지 않기 때문에 기존의 데이터 유형이나 함수를 전 문법으로 확장하여 필요한 속성과 메소드를 만드는 것 확장 속성 확장 함수 범위 함수.let() 변수 이름에 반복적으로 접근하지 않고도 클래스의 속성과 메소드에 간결하게 접근할 수 있는 방법 식별자 it 변수의 실제명 대신에 let 함수의 범위 내에서 사용하는 람다 표현식..
변수에 함수 저장 trickFunction 변수에 trick을 저장하려고 했습니다. 그러나 함수를 값으로 참조하려면 함수 참조 연산자(::)를 사용해야 합니다. fun main() { val trickFunction = ::trick } fun trick() { println("No treats!") } 람다 표현식을 사용한 함수 재정의 람다 표현식은 fun 키워드 없이 함수를 정의할 수 있는 간결한 문법입니다. 람다 표현식은 다른 함수에 관한 함수 참조 없이 변수에 직접 저장할 수 있습니다. 할당 연산자(=) 앞에 val 또는 var 키워드를 추가하고 그 뒤에 함수를 호출할 때 사용하는 변수 이름을 추가합니다. 할당 연산자(=) 다음에 람다 표현식이 옵니다. 이때 람다 표현식은 함수 본문을 구성하는 한..
클래스 클래스는 다음 세 가지 주요 부분으로 구성됩니다. 속성. 클래스 객체의 속성을 지정하는 변수입니다. 메서드. 클래스의 동작과 작업이 포함된 함수입니다. 생성자. 클래스가 정의된 프로그램 전체에서 클래스의 인스턴스를 만드는 특수 멤버 함수입니다. 객체 인스턴스화 class SmartDevice { // empty body } fun main() { val smartTvDevice = SmartDevice() // 객체로 인스턴스화 함 } 클래스에서 메서드 정의/호출 class SmartDevice { fun turnOn(){ println("Smart device is turned on.") turnOff() } fun turnOff(){ println("Smart device is turned o..
조건문 when 사용법 fun main() { val x = 3 when (x) { 2, 3, 5, 7 -> println("x is a prime number between 1 and 10.") in 1..10 -> println("x is a number between 1 and 10, but not a prime number.") else -> println("x isn't a prime number between 1 and 10.") } } // 결과 x is a number between 1 and 10, but not a prime number. fun main() { val x = 20 when (x) { 2, 3, 5, 7 -> println("x is a prime number betwe..
nullable type 널 안정성 변수 선언 단계에서 null이 가능한지 아닌지를 같이 선언 ? : 안전 호출 연산자 null일 경우 엑세스 시도를 중지하고 null을 반환함 !! : 어셜션 연산자 nullable로 선언했지만, 이 값은 절대 null일리가 없다는 것을 알려줌 *어셜션 연산자를 사용해서 null이 아니라고 선언했기 때문에 NullPointerException 오류 발생 class 객체를 정의하고 만들어 내기 위한 '틀' 또는 '설계도' - 내가 원하는 UI나 로직(계산식)을 구현하는 곳 - class 안에는 객체 생성을 위한 변수와 메서드가 들어감 객체 클래스에 선언된 모양 그대로 생성된 실체 그 자체 인스턴스 클래스가 메모리에 할당되어 사용가능하도록 만들어진 것 클래스 간의 관계 클래..
Business Card Project kotlin 버전 오류 => 'org.jetbrains.kotlin.android' 버전을 1.7.0으로 맞춰줌 혹시 모를 오류 때문에 gradle에 아래와 같은 dependency 추가 implementation 'org.jetbrains.kotlin:kotlin-reflect:1.7.0' Row 속 이미지와 텍스트가 가운데 정렬이 되어 한 줄씩 봤을 때 위치가 맞지 않음 => image와 text에 각각 weight를 부여한 뒤 image에는 padding(start = ) 속성을 따로 부여해서 해결 => 더 좋은 방법 기존에는 SubIntro에 Alignment.CenterHorizontally와 Arrangement.Bottom 후 Modifier에 padd..
Jetpack Compose Jetpack Compose는 Android UI를 빌드하기 위해 사용하는 최신 툴킷입니다. Compose는 적은 양의 코드, 강력한 도구 및 직관적인 Kotlin 기능으로 Android에서 UI 개발을 간소화하고 가속합니다. Compose를 사용하면 데이터를 받아서 UI 요소를 내보내는 함수, 즉 구성 가능한 함수라는 함수 집합을 정의하여 UI를 빌드할 수 있습니다. Composable 함수 Composable 함수는 Compose에서 UI의 기본 빌드 블록입니다. Composable 함수의 특징은 다음과 같습니다. UI 일부를 설명합니다. 아무것도 반환하지 않습니다. 몇 개의 입력을 받아서 화면에 표시되는 내용을 생성합니다. 여러 UI 요소를 내보낼 수도 있습니다. 매개변..
텍스트 업데이트 onCreate() 함수는 이 앱의 진입점이며 다른 함수를 호출하여 사용자 인터페이스를 빌드합니다. Kotlin 프로그램에서는 main() 함수가 Kotlin 컴파일러가 시작되는 코드의 특정 위치입니다. Android 앱에서는 onCreate() 함수가 이 역할을 합니다. onCreate() 함수 내 setContent() 함수는 구성 가능한 함수를 통해 레이아웃을 정의하는 데 사용됩니다. @Composable 주석으로 표시된 모든 함수는 setContent() 함수 또는 다른 구성 가능한 함수에서 호출할 수 있습니다. 주석은 Jetpack Compose에서 이 함수가 UI를 생성하는 데 사용된다고 Kotlin 컴파일러에 알립니다. class MainActivity : ComponentA..