์•ˆ๋“œ๋กœ์ด๋“œ 21

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค Database Inspector์—์„œ DB๊ฐ€ ์•ˆ๋ณด์ผ ๋•Œ

๋ถ„๋ช… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์กด์žฌํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , Database Inspector๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ด๋ ‡๊ฒŒ ๋œฐ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ํ•ด๊ฒฐ๋ฒ• ์•„์ฃผ ๊ฐ„๋‹จํ•จ . . . File -> Invalidate Caches/Restart ๋ฅผ ํ•˜๋ฉด ๋œ๋‹ค!!!!!! ๊ทธ๋Ÿฌ๊ณ  ๋‚˜์„œ ์•ฑ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด, DB๊ฐ€ ์ž˜ ๋ณด์ž„!๐Ÿ˜†

Android 2021.06.04

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ํ”„๋กœ์ ํŠธ Java๋ฅผ Kotlin์œผ๋กœ ๋ณ€ํ™˜ (java kt๋กœ ๋ฐ”๊พธ๊ธฐ)

์‹ ๋‚˜๊ฒŒ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋˜ ์–ด๋Š ๋‚  , , ๋ฌธ๋“ MainActivity๊ฐ€ Java๋กœ ๋˜์–ด์žˆ๋Š” ๊ฑธ ๊นจ๋‹ฌ์•˜๋‹ค. ์•Œ๊ณ  ๋ณด๋‹ˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ์ž๋ฐ”๋กœ ๋งŒ๋“ค์—ˆ๋˜ ๊ฒƒ,,,,, ๋‚˜๋จธ์ง€๋Š” ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ๋‹ค ์ž‘์—…ํ•ด๋†”์„œ ๋‹คํ–‰์ด์—ˆ์ง€๋งŒ, MainActivity๋งŒ Java๋กœ ๋˜์–ด์žˆ์–ด์„œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜ ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์—ญ์‹œ ํ‚น๊ฐ“ํ‹€๋ฆฐ...๐Ÿ‘ MainActivity์—์„œ ์šฐํด๋ฆญํ•˜๋ฉด, Convert Java File to Kotlin File ์ด๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค..! ํŒ์—…์ฐฝ์ด ๋œจ๋Š”๋ฐ ๊ทธ๋ƒฅ OK ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ž ์‹œ ํ›„... ์•„์ฃผ ๋‚˜์ด์Šค ํ•˜๊ฒŒ ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ๋ฐ”๋€๋‹ค!!!!!

Android 2021.05.28

Plugin [id: 'kotlin-android'] was not found in any of the following sources ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

Plugin [id: 'kotlin-android'] was not found in any of the following sources Plugin [id: 'kotlin-kapt'] was not found in any of the following sources plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' } Room ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๋ ค๊ณ  plugin์— 'kotlin-android'์™€ 'kotlin-kapt'๋ฅผ ์ถ”๊ฐ€ํ•˜๋‹ˆ๊นŒ ์ด์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค.๐Ÿ˜ข ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• Project ๋ ˆ๋ฒจ์˜ Gradle ํŒŒ์ผ๋กœ ๊ฐ„๋‹ค. Gradle ํŒŒ์ผ์— ์ž๊ธฐ์˜ ํ˜„์žฌ ์ฝ”ํ‹€๋ฆฐ ๋ฒ„์ „๊ณผ, classpath๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค! buildscript ..

Android 2021.05.23

[๋ถ€์ŠคํŠธ์ฝ”์Šค] 03. ์ฝ”ํ‹€๋ฆฐ null ์ฒ˜๋ฆฌ, ์ž๋ฃŒํ˜• ๋ณ€ํ™˜

์ฝ”ํ‹€๋ฆฐ์˜ null ์ฒ˜๋ฆฌ ์ฝ”ํ‹€๋ฆฐ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ null์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. null ๊ฐ€๋Šฅํ•œ ์„ ์–ธ (Nullable) val a: Int? = null val b: String? = null ๋‹จ์ˆœ ์ถœ๋ ฅ์€ ์ƒ๊ด€์—†์œผ๋‚˜ null์ธ ์ƒํƒœ์—์„œ ์—ฐ์‚ฐ๋˜๋Š” ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ๋•Œ → NPE ๋ฐœ์ƒ NPE (Null Pointer Exception) ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” null์ธ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ ์„ธ์ดํ”„ ์ฝœ ? fun main() { var str1: String? str1 = null println("str1: $str1, length: ${str1?.length}") // str1์ด null์ด๋ฉด length๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. } ? ์„ ๋ถ™์ด์ง€ ์•Š์œผ๋ฉด NPE๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. non-null ๋‹จ์ • ๊ธฐํ˜ธ !! f..

[๋ถ€์ŠคํŠธ์ฝ”์Šค] 02. ์ฝ”ํ‹€๋ฆฐ ๋ณ€์ˆ˜์™€ ์ž๋ฃŒํ˜•

์ฝ”ํ‹€๋ฆฐ ๋ณ€์ˆ˜ ์„ ์–ธ ์„ ์–ธ ๋ฐฉ๋ฒ• val (value) - ๋ถˆ๋ณ€ํ˜•. ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™” ํ›„ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ X var (variable) - ๊ฐ€๋ณ€ํ˜• fun main() { var username: String = "Kildong" username = "Dooly" println("username: $username") } ๋ฌธ์ž์—ด ๋‚ด์— ๋ณ€์ˆ˜๋‚˜ ์‹์„ ${๋ณ€์ˆ˜ ํ˜น์€ ์‹}์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ด๋ฉด $username์ฒ˜๋Ÿผ ์ค‘๊ด„ํ˜ธ ์ƒ๋žต ๊ฐ€๋Šฅ. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐ์ดํ„ฐํ˜•์„ ์ถ”๋ก ํ•ด ์„ ์–ธํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค. fun main() { var username = "Kildong" var count = 3 println("username: $username, count: $count") } ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ถ”๋ก ํ•œ ๋ณ€์ˆ˜๋Š” ctrl + shi..

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค styles.xml ์—†์Œ

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค๊ฐ€ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋ฉด์„œ styles.xml๋Œ€์‹  themes.xml๋กœ ํŒŒ์ผ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ €์ฒ˜๋Ÿผ ํ—ค๋งค์ง€ ๋งˆ์‹œ๊ธธ....๐Ÿ˜‚

Android 2021.02.07

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค 4.1์—์„œ ์œ„์ ฏ ์•„์ด๋”” ์ ‘๊ทผํ•˜๋Š” ๋ฒ•

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค 4.1 ๋ฒ„์ „์—์„œ๋Š” ์œ„์ ฏ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜๋™์œผ๋กœ ์ฝ”ํ‹€๋ฆฐ ์ต์Šคํ…์…˜์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. build.gradle(Module:ํ”„๋กœ์ ํŠธ์ด๋ฆ„.app) ํŒŒ์ผ ํด๋ฆญ. plugins { id 'com.android.application' id 'kotlin-android' // ์•„๋ž˜ ์ฝ”ํ‹€๋ฆฐ ์ต์Šคํ…์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. id 'kotlin-android-extensions' } ... id 'kotlin-android-extensions'๋ฅผ plugins ๋งจ ๋ฐ‘์— ์ถ”๊ฐ€ํ•˜์ž! (+) ์ถ”๊ฐ€ id๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ๋‹ค๋ฅธ ํ™”๋ฉด์˜ ๋ฒ„ํŠผ์ด๋‚˜ ํ…์ŠคํŠธ๋ทฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜๋Š” ์œ„ํ—˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”ํ‹€๋ฆฐ ์ต์Šคํ…์…˜์€ ์—†์–ด์งˆ ๊ณ„ํš์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ์œ„์ฒ˜๋Ÿผ id์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ• ๋Œ€์‹  ๋ทฐ๋ฐ”์ธ๋”ฉ์„ ์“ฐ์‹ค ๊ฒƒ์„ ์ถ”์ฒœ!!!!! hyunjung..

Android 2021.02.07

[๋ถ€์ŠคํŠธ์ฝ”์Šค] 01. ์ฝ”ํ‹€๋ฆฐ ์†Œ๊ฐœ, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์น˜

์ฝ”ํ‹€๋ฆฐ์ด๋ž€? ์ฝ”ํ‹€๋ฆฐ์˜ ํŠน์ง• IDE(Android Studio์˜ ๋ชจ์ฒด)๋กœ ์œ ๋ช…ํ•œ JetBrains์—์„œ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ณด๊ธ‰. ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋‹ค์žฌ๋‹ค๋Šฅํ•˜๋ฉฐ ํ˜ธํ™˜์„ฑ์ด ๋†’๋‹ค. ๋ฌธ์žฅ ๋์— ์„ธ๋ฏธ์ฝœ๋ก ์€ ์˜ต์…˜์ด๋‹ค. (์•ˆ ๋ถ™์—ฌ๋„ ๋œ๋‹ค.) Android Studio์—์„œ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต์‹ ์–ธ์–ด๋กœ ์ถ”๊ฐ€. ๋ณ€์ˆ˜๋Š” Nullable(๋„ ๊ฐ’ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)๊ณผ NotNull๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ '?'๋ฅผ ๋ถ™์—ฌ Nullable๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. Null ๊ฐ’์ด ๊ฐ€๋Šฅ ํ•œ์ง€, ์•ˆ ํ•œ ์ง€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ. ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•  ํ•„์š” ์—†๋‹ค. ์ฝ”ํ‹€๋ฆฐ์˜ ์šฉ๋„(์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”Œ๋žซํผ) Kotlin/JVM ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  ์ƒ์—์„œ ๋™์ž‘ํ•˜๋Š” ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. → ์•ˆ๋“œ๋กœ์ด๋“œ๋„ ๊ฐ€๋Šฅ! Kotlin/JS ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. Kot..

[๋ถ€์ŠคํŠธ์ฝ”์Šค] 00. ๋ถ€์ŠคํŠธ์ฝ”์Šค ์†Œ๊ฐœ, ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๋ถ€์ŠคํŠธ์ฝ”์Šค ๋ถ€์ŠคํŠธ์ฝ”์Šค๋Š” ๋„ค์ด๋ฒ„ ์ปค๋„ฅํŠธ์žฌ๋‹จ์—์„œ ๊ธฐํšํ•˜๊ณ  ์šด์˜ํ•˜๋Š” ์‹ค๋ฌดํ˜• ์˜จ๋ผ์ธ ๊ต์œก ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. IT ๋ถ„์•ผ์— ๋Œ€ํ•œ ํ€„๋ฆฌํ‹ฐ ๋†’์€ ๊ฐ•์˜๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ˆ„๊ตฌ๋‚˜ ์ œํ•œ ์—†์ด ๋ฌด๋ฃŒ๋กœ ์ˆ˜๊ฐ• ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!! ๋˜ํ•œ ๋ชจ๋“  ๊ณผ์ •์€ ํ”„๋กœ์ ํŠธ ํ˜•์‹์˜ ๊ณผ์ œ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค๋ฌด ์—ญ๋Ÿ‰์„ ๊ธฐ๋ฅด๋Š”๋ฐ ์ตœ๊ณ ์˜ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค!๐Ÿ‘๐Ÿ‘ ์ €๋Š” ์•ž์œผ๋กœ '์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ' ๊ฐ•์˜๋ฅผ ํ•™์Šตํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ €์™€ ํ•จ๊ป˜ ๊ณต๋ถ€ํ•˜์‹ค ๋ถ„๋“ค์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. ๐Ÿ˜Š www.boostcourse.org/mo132 ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ1/2(ํ•จ์ˆ˜ํŽธ) ๋ถ€์ŠคํŠธ์ฝ”์Šค ๋ฌด๋ฃŒ ๊ฐ•์˜ www.boostcourse.org ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ถ€์ŠคํŠธ์ฝ”์Šค์˜ ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์˜๋Š” ๊ตฌ๊ธ€์—์„œ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต์‹ ์–ธ์–ด๋กœ ์ง€์ •๋œ '์ฝ”ํ‹€๋ฆฐ'์„ ํ•™์Šตํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ด 3ํŽธ์œผ๋กœ ๊ตฌ์„ฑ๋˜..