๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 87

๋ทฐ๋ฐ”์ธ๋”ฉ ์ดˆ๊ธฐ ์ž‘์—…

1. build.gradle(Module:ํ”„๋กœ์ ํŠธ์ด๋ฆ„.app)์˜ android ๋ฐ‘์— ์ด ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ buildFeatures { viewBinding = true } 2. MainActivity.kt๋กœ ๊ฐ€์„œ ์ฝ”๋“œ ์ถ”๊ฐ€ class MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) } }

Android 2021.02.26

์•ˆ๋“œ๋กœ์ด๋“œ ์ƒ๋ช…์ฃผ๊ธฐ

์ƒ๋ช…์ฃผ๊ธฐ ์„ค๋ช… ํ™œ์šฉ ์˜ˆ์‹œ onCreate() - ์•กํ‹ฐ๋น„ํ‹ฐ ์ƒ์„ฑ - ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ(XML) - ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ์ •์˜ - ๊ทธ ์™ธ ํ™œ๋™์— ๊ด€ํ•œ ๊ธฐ๋ณธ ์„ค์ • onStart() - ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๊ธฐ ๋ฐ”๋กœ ์ง์ „์— ํ˜ธ์ถœ - onStop()์ด ํ˜ธ์ถœ๋œ ํ›„ ๋‹ค์‹œ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์‹คํ–‰๋ ๋•Œ๋Š” onStart()๋ถ€ํ„ฐ ํ˜ธ์ถœ๋จ - onStop()ํ›„ ๋‹ค์‹œ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„์™”์„ ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•  ๋ถ€๋ถ„ - ํ•„์š”ํ•œ ์‹œ์Šคํ…œ ๊ธฐ๋Šฅ์ด ํ™œ์„ฑํ™” ๋˜์–ด ์žˆ๋Š”์ง€ ์ฒดํฌ (GPS ํ™œ์„ฑํ™” ์—ฌ๋ถ€ ๋“ฑ) onResume() - ์‹ค์ œ ์•ก๋น„ํ‹ฐ๋น„๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ค‘ - ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ๋ฐ”๋กœ ์ „ - ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ดˆ๊ธฐํ™”ํ•ด์•ผํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค (์นด๋ฉ”๋ผ ์ดˆ๊ธฐํ™” ๋“ฑ) onPause() - ๋‹ค๋ฅธ ํ™”๋ฉด์— ์˜ํ•ด ํ™”๋ฉด ์ผ๋ถ€๊ฐ€ ๊ฐ€๋ ค์ง€๋Š” ๊ฒฝ์šฐ ํ˜ธ์ถœ - onRes..

Android 2021.02.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..

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ classList๋ฅผ ์จ์•ผํ•˜๋Š” ์ด์œ 

~์ž ๊น ์‚ฌ๋‹ด~ ์•„์ง ๊ณต๋ถ€ํ•œ ์ง€ ์–ผ๋งˆ ์•ˆ ๋์ง€๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค.ใ… ใ…  ํŒŒ์ด์ฌ, ์ž๋ฐ”๋ฅผ ์ฒ˜์Œ ๋ฐฐ์šธ๋•Œ ๋ณด๋‹ค ํ›จ์”ฌ ์–ด๋ ค์›€....ใ… ใ… ใ… ใ…  ๊ฒŒ๋‹ค๊ฐ€ ์ง€๊ธˆ ์ฑŒ๋ฆฐ์ง€ ์ค‘์ธ๋ฐ, ์ž˜ํ•˜์‹œ๋Š” ๋ถ„๋“ค ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์ž๊ดด๊ฐ ๋“ ๋‹ค. ์ง„์งœ ๋ฆฌ์ŠคํŽ™......๐Ÿ˜ญ if๋ฌธ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ html JS is so hard!! css body { background-color: #fab1a0; } h1 { color: #2980b9; transition: color 0.5s ease-in-out; } .clicked { color: #6c5ce7; } JS const title = document.querySelector("#title"); const CLICKED_CLASS = "clicked"; function handleClick(..

Web 2021.01.16

Java split()๊ณผ StringTokenizer ์ฐจ์ด

library1008.tistory.com/16 ๋ฌธ์ž์—ด ๋ถ„๋ฆฌ - split() ์™€ StringTokenizer ์˜ ์ฐจ์ด์  ๋ฌธ์ž์—ด์„ ์›ํ•˜๋Š” ๊ตฌ๋ถ„์ž(delimiter)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ StringTokenizer ์™€ String ๋ฉ”์†Œ๋“œ split() ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์ง€๋งŒ ๋‹ค๋ฅธ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ œ์— library1008.tistory.com ์ •๋ง ์ •๋ฆฌ๋ฅผ ์ž˜ํ•ด๋†“์œผ์…จ๋‹ค!! ๐Ÿ‘๐Ÿ‘

Java 2021.01.15