1๏ธโฃ ๊ฐ๋ณ์ ์ผ๋ก ํด๋ฆญ ๋ฆฌ์ค๋๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ
- ๊ฐ ๋ทฐ์ setOnClickListener ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฆญ ๋ฆฌ์ค๋๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ค์ ํฉ๋๋ค.
- ์ต๋ช
ํด๋์ค๋ ๋๋ค ํํ์์ ์ฌ์ฉํ์ฌ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ฌ๋ฌ ๋ทฐ์ ๋์ผํ ๋ฆฌ์ค๋๋ฅผ ์ ์ฉํ๋ ค๋ฉด ๊ณตํต ๋ฆฌ์ค๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉํฉ๋๋ค.
// 1๏ธโฃ๊ฐ๋ณ ๋ทฐ์ ํด๋ฆญ ๋ฆฌ์ค๋ ์ค์
one.setOnClickListener { view ->
// ์ฒซ ๋ฒ์งธ ๋ฒํผ ํด๋ฆญ ์ ๋์
Log.d(TAG, "์ฒซ ๋ฒ์งธ ๋ฒํผ ํด๋ฆญ๋จ")
}
two.setOnClickListener { view ->
// ๋ ๋ฒ์งธ ๋ฒํผ ํด๋ฆญ ์ ๋์
Log.d(TAG, "๋ ๋ฒ์งธ ๋ฒํผ ํด๋ฆญ๋จ")
}
// 2๏ธโฃ๊ณตํต ๋ฆฌ์ค๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
val listener = View.OnClickListener { view ->
when (view.id) {
R.id.one -> Log.d(TAG, "์ฒซ ๋ฒ์งธ ๋ฒํผ ํด๋ฆญ๋จ")
R.id.two -> Log.d(TAG, "๋ ๋ฒ์งธ ๋ฒํผ ํด๋ฆญ๋จ")
// ์ถ๊ฐ ์ฒ๋ฆฌ
}
}
one.setOnClickListener(listener)
two.setOnClickListener(listener)
์ฅ์
- ์ ์ฐ์ฑ : ํ์ํ ๋ทฐ์๋ง ๋ฆฌ์ค๋๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
- ๊ฐ๋
์ฑ : ํน์ ๋ทฐ์ ํด๋ฆญ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ํด๋น ์์น์ ๋ช
ํํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
- ์ฝ๋ ๋ถ๋ฆฌ : ๊ฐ ๋ทฐ์ ๋์์ ๊ฐ๋ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋จ์
- ๋ฐ๋ณต ์ฝ๋ : ๋ง์ ๋ทฐ์ ๋ฆฌ์ค๋๋ฅผ ์ค์ ํด์ผ ํ ๊ฒฝ์ฐ ์ฝ๋๊ฐ ๊ธธ์ด์ง ์ ์์ต๋๋ค.
- ํด๋์ค์ ๋ณต์ก์ฑ ์ฆ๊ฐ : ์ต๋ช
ํด๋์ค๋ ๋๋ค ํํ์์ด ๋ง์์ง๋ฉด ์ฝ๋๊ฐ ๋ณต์กํด์ง ์ ์์ต๋๋ค.
2๏ธโฃ View.OnClickListener ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ
- ์กํฐ๋นํฐ๋ ํ๋๊ทธ๋จผํธ๊ฐ View.OnClickListener ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
- onClick ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ์ฌ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
- setOnClickListener(this)๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ํด๋์ค ์์ฒด๋ฅผ ๋ฆฌ์ค๋๋ก ์ค์ ํฉ๋๋ค.
// ์กํฐ๋นํฐ ์ ์ธ ์ ์ธํฐํ์ด์ค ๊ตฌํ
class QuizActivity : AppCompatActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
// ๋ทฐ์ ๋ฆฌ์ค๋๋ก ํ์ฌ ์กํฐ๋นํฐ ์ค์
one.setOnClickListener(this)
two.setOnClickListener(this)
}
// ํด๋ฆญ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฉ์๋
override fun onClick(view: View?) {
when (view?.id) {
R.id.one -> Log.d(TAG, "์ฒซ ๋ฒ์งธ ๋ฒํผ ํด๋ฆญ๋จ")
R.id.two -> Log.d(TAG, "๋ ๋ฒ์งธ ๋ฒํผ ํด๋ฆญ๋จ")
}
}
}
์ฅ์
- ์ฝ๋ ์ผ๊ด์ฑ : ํด๋ฆญ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ํ ๊ณณ์์ ๊ด๋ฆฌํ ์ ์์ด ์ฝ๋๊ฐ ๊น๋ํฉ๋๋ค.
- ์ฌ์ฌ์ฉ์ฑ : ๋์ผํ ํด๋ฆญ ๋์์ ์ฌ๋ฌ ๋ทฐ์ ์ ์ฉํ๊ธฐ ์ฝ์ต๋๋ค.
- ํด๋์ค ๊ตฌ์กฐ ๋จ์ํ : ์ธํฐํ์ด์ค ๊ตฌํ์ผ๋ก ๋ช
ํํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.
๋จ์
- ์ ์ฐ์ฑ ๊ฐ์: ๋ชจ๋ ํด๋ฆญ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ฐ ํ๋์ ๋ฉ์๋์ ์ง์ค๋์ด ์์ ๊ฒฝ์ฐ, ์ฝ๋๊ฐ ๊ธธ์ด์ง ์ ์์ต๋๋ค.
- ๊ฐ๋
์ฑ ์ ํ: ๋ง์ ๋ทฐ์ ํด๋ฆญ ์ฒ๋ฆฌ๋ฅผ ํ ๋ฉ์๋์์ ํ๋ฉด ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ๋ทฐ ์๋ณ ํ์: ํด๋ฆญ๋ ๋ทฐ๋ฅผ ์๋ณํ๊ธฐ ์ํด when์ด๋ if๋ฌธ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๐ก ๋น๊ต ์์ฝ
๊ตฌ๋ถ |
๊ฐ๋ณ ๋ฆฌ์ค๋ ์ค์ |
์ธํฐํ์ด์ค ๊ตฌํ |
๊ตฌํ ๋ฐฉ์ |
๊ฐ ๋ทฐ์ setOnClickListener๋ก ๋ฆฌ์ค๋ ์ค์ |
ํด๋์ค๊ฐ View.OnClickListener๋ฅผ ๊ตฌํํ์ฌ onClick ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ |
์ฝ๋ ์์น |
ํด๋ฆญ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ๋ทฐ ์ค์ ๋ถ๋ถ์ ์์ฑ |
ํด๋ฆญ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ onClick ๋ฉ์๋์์ ํ ๊ณณ์์ ๊ด๋ฆฌ |
๊ฐ๋
์ฑ |
๋ทฐ๋ณ๋ก ๋ถ๋ฆฌ๋์ด ์์ด ๊ฐ๋
์ฑ์ด ์ข์ |
๋ทฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ onClick ๋ฉ์๋๊ฐ ๊ธธ์ด์ ธ ๊ฐ๋
์ฑ์ด ๋จ์ด์ง ์ ์์ |
์ ์ฐ์ฑ |
ํน์ ๋ทฐ์๋ง ๋ฆฌ์ค๋๋ฅผ ์ค์ ํ๊ฑฐ๋ ๋ค์ํ ๋ฆฌ์ค๋๋ฅผ ์ฌ์ฉํ ์ ์์ |
๋ชจ๋ ํด๋ฆญ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ฐ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋จ |
์ฌ์ฌ์ฉ์ฑ |
๊ณตํต ๋ฆฌ์ค๋๋ฅผ ์์ฑํ์ฌ ์ฌ๋ฌ ๋ทฐ์ ์ ์ฉ ๊ฐ๋ฅ |
ํด๋์ค ์์ฒด๋ฅผ ๋ฆฌ์ค๋๋ก ์ฌ์ฉํ์ฌ ์ฌ์ฌ์ฉ์ฑ ๋์ |
์ฝ๋ ์ค๋ณต |
๋ง์ ๋ทฐ์ ์ค์ ์ setOnClickListener ํธ์ถ์ด ๋ฐ๋ณต๋ ์ ์์ |
setOnClickListener(this)๋ก ์ค์ ํ๋ฏ๋ก ์ฝ๋ ์ค๋ณต์ด ์ ์ |
๋ทฐ ์๋ณ ๋ฐฉ๋ฒ |
๋ฆฌ์ค๋ ๋ด๋ถ์์ ๋ทฐ์ ID๋ฅผ ํ์ธํ์ฌ ์ฒ๋ฆฌ |
onClick ๋ฉ์๋์์ view.id๋ก ๋ทฐ๋ฅผ ์๋ณํ์ฌ ์ฒ๋ฆฌ |