코틀린


💡 개요 오늘은 Zxing(Zebra Crossing) 라이브러리를 이용하여 QR코드 스캔을 가능하게 하는 것을 공부하려고 한다. Zxing 라이브러리는 구글에서 제공하는 오픈소스로 다양한 바코드를 생성하거나 인식할 수 있다. 더 자세한 내용은 아래의 Github에서 확인할 수 있다. https://github.com/journeyapps/zxing-android-embedded GitHub - journeyapps/zxing-android-embedded: Barcode scanner library for Android, based on the ZXing decoder Barcode scanner library for Android, based on the ZXing decoder - GitHub - ..


💡 개요 오늘은 Android에서 Fragment를 어떻게 사용할 수 있는지에 대해 예제를 통해 공부해보려 한다. 우리는 Activity를 통해서 화면을 전환할 수 있다. 하지만 Activity 전체를 전환하는 것은 Fragment를 사용해 화면을 교체하는 것보다 상대적으로 많은 리소스를 사용한다. 그렇기 때문에 효율적인 App을 만들기 위해선 Fragment를 사용하는 것이 좋다. 💡 STEP 1 : Layout에 추가하기 가장 처음으로 Fragment를 사용해 화면을 교체하고자 하는 Layout에 FrameLayout을 추가해줘야 한다. 나는 activity_main에서 사용하기 위해 다음과 같이 추가했다. 아래 2개의 Button은 Fragment를 교체하기 위해 추가했다. [activity_mai..


💡 개요 어떤 권한을 얻기 위해서는 우선 AndroidManifets.xml에 필요한 권한을 선언해줘야 한다. [AndroidManifest.xml] 그리고 기존에 권한을 얻기 위해서는 아래와 같은 과정을 작성해줘야 했다. 1. 권한이 얻어졌는지 확인 2. 권한이 얻어지지 않았다면 권한을 요청 3. 권한은 얻어졌다면 필요한 과정을 수행 [MainActivity.kt] package com.example.tedpermission import android.content.pm.PackageManager import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.widg..


💡 범위 지정 함수란? (= Scope Function) 범위 지정 함수는 특정 범위 블록 내에서는 특정 객체를 this, it을 통해 접근하거나 조작할 수 있는 함수를 말한다. 즉, 범위 지정 함수를 사용하면 임시 Scope가 형성된다. 이렇게 사용하면 뭐가 좋냐? 일단 가독성이 증가하여 유지보수가 쉽고, 불필요한 변수 선언을 방지할 수 있다. Kotlin에서는 범위 지정 함수 5가지(let, apply, with, also, run)를 제공하고 있다. 이 함수들은 수신 객체를 어떻게 전달하는지, 반환 값이 무엇인 지에 따라 차이점이 있다. 💡 Type 1 : let 함수 fun T.let(block : (T) -> R) : R let은 수신 객체를 람다의 Parameter로 전달하기 때문에 'it'을..


💡 개요 코드를 작성하다 보면 NullPointerException(NPE)를 자주 접할 수 있다. 이 예외는 Null 값을 참조하는 경우에 발생하는 예외이다. 생각보다 NPE는 자주 발생하며 코드가 길어질수록 그 원인을 파악하기 힘든 경우가 많다. 그래서 Kotlin에서는 Null에 대한 처리를 명확하게 하여 NPE의 발생빈도를 낮추고자 했다. 오늘은 Kotlin에서 Null을 어떻게 다루는지에 대해 알아보고자 한다. 💡 Type 1 : '?' 연산자 코틀린에서는 기본적으로 Null 값을 허용하지 않는다. 대신 '?'를 붙여 Null이 올 수도 있는 변수임을 명시적으로 표현할 수 있다. 아래와 같이 '?'연사자를 사용하지 않은 변수 a의 경우 Null 값을 넣으면 Error가 발생한다. 하지만 '?' ..


💡 개요 이전 포스팅에서 RecyclerView를 사용할 Layout에 추가하고, RecyclerView에 들어가는 Item을 만들었다. 또한, Data를 하나로 묶어서 관리하기 위한 DTO를 만들었다. 이어서 Adapter를 만들고 실제 Activity에 적용시켜보고자 한다. 💡 STEP 4 : Adapter 만들기 이제 본격적으로 Adapter를 만들어야 한다. Adapter는 간단하게 아이템을 RecyclerView에 바인딩시켜주기 위한 사전 작업이 이루어지는 객체이다. Adapter에 속한 각 함수에 대해 설명하자면 onCreateViewHolder는 ViewHolder 객체를 만들어주는 역할을 한다. onBindViewHolder는 생성된 ViewHolder에 Data를 Binding 해주는 역..


💡 개요 오늘은 Android에서 RecyclerView를 어떻게 사용할 수 있는지에 대해 예제를 통해 공부해보려 한다. RecyclerView는 ListView에 비해 가로/세로/그리드 등 다양하게 리스트를 구현할 수 있고, 아이템을 생성할 때 바인딩된 뷰 객체를 재활용하기 때문에 Performance 측면에서 이점이 있다. 그렇기 때문에 다양하게 사용되고 있어 사용법을 익히고 넘어가고자 한다. 💡 STEP 1 : Layout에 추가하기 가장 처음으로 RecyclerView를 사용하고자 하는 Layout에 RecyclerView를 추가해줘야 한다. 나는 activity_main에서 사용하기 위해 다음과 같이 추가했다. [activity_main.xml] 💡 STEP 2 : RecyclerView에 들어..


💡 개요 Android 앱을 제작하다 보면 Activity를 이동할 때 값을 전달해줘야 하는 경우가 있다. 그럴 경우 어떻게 하면 값을 전달할 수 있는지 예제를 통해 알아보고자 한다. 💡 방법 일단은 보내고자 하는 Activity에서 Intent를 먼저 생성해야 한다. 그 후 putExtra()를 통해 해당하는 Intent로 데이터를 전달할 수 있다. // Intent 생성 val intent = Intent(this, SubActivity::class.java) // "str"은 key값, str은 value intent.putExtra("str", str) 데이터를 받는 Activity에선 별도의 Intent를 생성하지 않아도 getStringExtra()를 이용해 데이터를 받을 수 있다. // In..


💡 개요 Kotlin은 Java와 호환이 가능하다. 그렇기 때문에 Java에서 사용하던 반복문을 그대로 사용할 수 있다. 하지만 Kotlin에서만 사용되는 방법이 따로 있기 때문에 오늘은 Kotlin에서 반복문 사용법에 대해 알아보고자 한다. 💡 in을 이용한 반복문 Kotlin에서는 in을 이용해 다양하게 반복문을 사용할 수 있다. [Example 1] val list = arrayOf(1, 2, 3, 4, 5) for(i in list){ println(i) } [Example 2] for(i in 1..5){ println(i) } [Example 3] for(i in 0..10 step 2){ println(i) } [Example 4] downTo의 경우 감소하는 반복문을 구현할 때 사용할 수 ..