코틀린+안드로이드 17

카카오맵 등등에서 필요로 하는 keyhash가져오기

try { val info: PackageInfo = packageManager.getPackageInfo("패키지명", PackageManager.GET_SIGNATURES); for (signature in info.signatures) { val md: MessageDigest = MessageDigest.getInstance("SHA") md.update(signature.toByteArray()); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (e: PackageManager.NameNotFoundException) { e.printStackTrace(); } catch (e: NoSuchAlgo..

navigation jetpack

navigation jetpack 출처 https://www.youtube.com/watch?v=M1e2tLnzVPo [Code with Joyce] 자세한 내용은 https://developer.android.com/guide/navigation/navigation-getting-started 에서 확인 네비게이션 그래프 란 그래프를 UI적으로 한눈에 알아 보기 쉽게 표현해주는 것 build.gradle 추가 dependencies { def nav_version = "2.3.0-rc01" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:..

15. object

object 출처 https://www.youtube.com/watch?v=Q5noYbbc9uc [Code with Joyce] object로 클래스를 정의하면, 싱클턴(Singleton) 패턴이 적용되어 객체가 한번만 생성 object Foo { fun bar(): String { return "foo.bar" } } fun main() { println(Foo.bar()) } // 결과값 foo.bar ================================================= // 출처 https://link2me.tistory.com/1787 object Singleton{ init { println("Singleton class invoked.") } var variableName ..

12. Lambdas 람다

출처 https://www.youtube.com/watch?v=Q5noYbbc9uc [Code with Joyce] 익명 함수 (Anonymous Functions)를 지칭하는 용어 함수를 간편하게 작성할수 있어서 다른 함수의 인수로 넣을 때 사용 람다식은 우리가 마치 value 처럼 다를 수 있는 익명함수 형식 { parameter -> 내용} 람다 함수는 항상 { }으로 감싸서 표현 {} 안에 "->" 표시가 있으며 "->" 왼쪽은 매개변수, 오른쪽은 함수 내용 매개변수는 ( )로 감싸지 않음 매개변수 타입을 선언해야 하며 예상 가능할때 생략 가능 함수의 반환값은 함수 내용의 마지막 표현식 함수의 맨 마지막 인자가 람다라면 () 안에서 빼내서 밖에 람다를 표현할 수 있음 인자가 하나라면 그 인자는 람..

11. class

class 출처 https://www.youtube.com/watch?v=IDVnZPjRCYg&t=8s [Code with Joyce] 클래스는 class 키워드를 붙여 선언 class Invoice { /.../ } 클래스의 이름은 첫글자를 대문자로 함 클래스에 본문이 없으면 중괄호를 생략 가능 코틀란의 class를 객체화를 할때 new 연산자를 사용하지 않음 기본적으로 public class Human { var name = "joyce" fun eatingCake(){ println("this is so YUMMMYY~~~") } } fun main(){ var human = Human() human.eatingCake() //결과값 this is so YUMMMYY~~~ println("this ..

10. for, while

for, while 출처 https://www.youtube.com/watch?v=IDVnZPjRCYg&t=8s [Code with Joyce] for (i in items) {} items수 만큼 반복 for ((index, value) in items.indices) {} 배열이나 리스트의 index값을 이용하여 반복 for (i in items.withIndex) {} 배열이나 리스트의 index값을 이용하여 반복 for (i in 1..10) {} 1 부터 1씩 증가하며 10까지 반복 for (i in 1 until 10) {} 1부터 1씩 증가하며 10을 제외하고 반복 for (i in 1..10 step 2) {} 1부터 2씩 증가하며 10까지 반복 for (i in 10 downTo 1) {..

9. Nullable / NonNull

Nullable / NonNull 출처 https://www.youtube.com/watch?v=IDVnZPjRCYg&t=8s [Code with Joyce] NPE: NULL pointer Exception 데이터 타입에 ?를 붙임으로서 null이 가능한 변수임을 명시적으로 표현 코틀린은 기본적으로 NonNull 타입 ?. 연산자는 변수가 null 이 아닐때만 오른쪽 함수를 실행하고 null 이면 null을 반환 fun main(){ nullcheck() } fun nullcheck(){ var nullName : String = null // Null can not be a value of a non-null type String 에러발생 // ?를 사용하여 null이 가능한 변수임을 선언해야함 //..

8. List, ArrayList

List, ArrayList 출처 https://www.youtube.com/watch?v=IDVnZPjRCYg&t=8s [Code with Joyce] List List는 값을 변경하지 못하는 읽기 전용 순서가 있고, 중복이 가능 listOf 를 이용하여 객체를 생성 fun main(){ val list :List = listOf(1,2,3) // list 초기화 val list2 : List = listOf(1,"d",11L) // list 초기화 list[0] = 2 //결과값 No set method providing array access 오류메세지 발생 var result :Int = list.get(0) //list는 값을 변경하지 못하는 읽기 전용 println(result) // 결과값 ..