Android
-
[Java] ๋์์ธ ํจํด (Factory ํจํด)Android/Java 2021. 1. 5. 09:43
์ด ๊ธ์ "์ธํ๋ฐ Java ๋์์ธ ํจํด" ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑํ์์ต๋๋ค. Factory ํจํด์ด๋? Builder ํจํด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํจํด์ ๋๋ค. ์ด ํจํด์ ๊ฐ์ฒด ์ฌ์ด์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด ์ฃผ๋ก ์ฌ์ฉํ๋ ํจํด์ ๋๋ค. Factory ํจํด์ ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค๋ก ์ ์ธ์ ํ๊ณ ๋ด๋ถ์์๋ ์ด๋ค ๊ฐ์ฒด๊ฐ ์์ฑ์ด ๋๋์ง ๋ชจ๋ฅด๋๊ฒ ํต์ฌ์ ๋๋ค. ์ฆ, ํด๋์ค์ ์ธ์คํด์ค๋ ์๋ธ ํด๋์ค์์ ๊ฒฐ์ ๋๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ๋ง์ฝ ๊ตฌ์ ํด๋์ค (new๋ก ์ง์ ์์ฑ)๋ฅผ ๊ธฐ๋ฐํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด, ๋์ค์ ์ฝ๋ ์์ ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๊ณ ์ ์ฐ์ฑ์ด ๋จ์ด์ง๊ฒ ๋ฉ๋๋ค. ์๋๋ก์ด๋์์ ์๋ก์ด Fragment๋ฅผ ์์ฑํ ๋, Factory ํจํด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ตณ์ด import ํ์ง ์์๋ ๋์ด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ..
-
[Android] Recycler View ์ฌ์ฉ๋ฒAndroid 2021. 1. 4. 21:49
์ด ๊ธ์ Recycler View ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ๊ธ์ ๋๋ค. RecyclerView ๋? RecyclerView๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐ ์ฌ์ฉ๋๋ View ์ ๋๋ค. ๋ง์ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์คํฌ๋ฆฐ์ ์๋๋ก ๋ด๋ฆด ๋, RecyclerView๋ view๋ฅผ ์์ ์ง ์๊ณ ์ฌ์ฌ์ฉํฉ๋๋ค. ListView์์ Adapter์ getView ๋ฉ์๋์์ convertView๋ฅผ ์ฌ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ด ์ฌ์ฌ์ฉ์ ๋ง์ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์ฑ์ ๋ฐ์์ฑ์ ํฅ์์ํค๊ณ ์๋น ์ ๋ ฅ์ ์ค์ผ ์ ์์ต๋๋ค. ์ฃผ์ ํด๋์ค RecyclerView ๋ฐ์ดํฐ์ ์ผ์นํ๋ ๋ทฐ๋ฅผ ํฌํจํ๋ ViewGroup, view ์์ฒด๋ ๋ ์ ์์ด์ ๋ค๋ฅธ UI ์์์ฒ๋ผ ๋ ์ด์์ ๋ด์ ํฌํจ์ํฌ ์ ์์ต๋๋ค. ViewHolder ๋ฆฌ์คํธ ๋ด์ ๊ฐ ์..
-
[Java] ๋์์ธ ํจํด (Builder ํจํด)Android/Java 2021. 1. 3. 21:55
์ด ๊ธ์ "์ธํ๋ฐ Java ๋์์ธ ํจํด" ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑํ์์ต๋๋ค. Builder ํจํด์ด๋? ์๋๋ก์ด๋, ์๋ฐ ๊ฐ๋ฐ์ ํ ๋ ์์ฃผ ์ฐ์ด๋ ํจํด ์ค ํ๋์ ๋๋ค. Builder ํจํด์ ํด๋์ค ์์ฑ ํจํด์ผ๋ก ๋ฉค๋ฒ ๋ณ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ๋ค์ํ ์์ฑ์๊ฐ ํ์ํ๋ค๋ ๋จ์ ์ ํด๊ฒฐํ ์ ์๋ ํจํด์ ๋๋ค. Builder ํจํด์ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋์์ง๊ณ ์ ์ง๋ณด์๋ฅผ ํธ๋ฆฌํ๊ฒ ํ ์ ์์ต๋๋ค. ๋ํ, ๊ฐ์ฒด ์์ฑ๋ ๊น๋ํ ํ ์ ์์ต๋๋ค. ์๋๋ก์ด๋์์ NotificationCompat์ ์๋ฐ์์ StringBuilder์์ Builder ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. Builder ํจํด ์ฌ์ฉ Student ๊ฐ์ฒด์ Builder ํจํด์ ์ฌ์ฉํ์์ต๋๋ค. ์๋ Student์ ์ ๋ณด( ํ๋ฒ..
-
[Android] android.app.RemoteServiceException: Bad notification for startForeground: java.lang.RuntimeException: invalid channel for service notificationAndroid/Exception 2020. 12. 14. 09:59
์๋๋ก์ด๋ ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ๊ธ์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๋ Notification ์ ์ฌ์ฉ ์์ Oreo ๋ฒ์ (API26) ์ด์์ด๋ฉด notification Channel์ ๋ฑ๋กํด์ผ ํฉ๋๋ค. ์ด notification Channel์ ๋ฑ๋กํ์ง ์์ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ ์ค๋ฅ๋ก ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ฉด ํด๊ฒฐ๋ฉ๋๋ค. public void createNotificationChannel() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationManager manager = getBaseContext().getSystemService(NotificationManager.class); NotificationChannel serviceChannel =..
-
[Android] java.lang.IllegalAccessException : is not accessible from java.lang.Class<android.app.Instrumentation>Android/Exception 2020. 10. 25. 18:47
์๋๋ก์ด๋ ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ๊ธ์ ๋๋ค. java.lang.IllegalAccessException : is not accessible from java.lang.Class ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ ์คํ๋์ ํ๋ฉด์ ๊ฐ๋ฐํ๋ ์ค์ ๋ฐ์ํ๋ ์๋ฌ์ ๋๋ค. ์คํ๋์ ํ๋ฉด์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์๋ xml์ setContentView๋ฅผ ์์ฑํ๊ฑฐ๋, style๋ก theme๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. style์ theme๋ก ์์ฑํ๊ธฐ ์ํด์ ์๋ก์ด class๋ฅผ ๋ง๋ค ๋ public์ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์, ์๋ก์ด class์ public์ผ๋ก ์์ฑํ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค.