๐ Today I Learned
alert Dialog์ ์๋ EditText์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๊ณ ์ถ์๊ณ ๊ทธ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ํ์ธ ๋ฒํผ์ ํ์ฑํ ์ํค๊ณ ์ถ์๋ค. ์๋ฌํธ ๋ค์ด์ผ๋ก๊ทธ์์๋ POSITIVE๋ฒํผ๊ณผ NEGATIVE / NEUTRAL ๋ฒํผ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฒํผ๋ค์ ํ์ฑํ ์ํค๋ ๋ฐฉ๋ฒ์ ๋ชฐ๋ผ์ ์ธํฐ๋ท์ ๊ฒ์์ ํด๋ณด์๋ค.
์ฐพ์๋ณด๋ ์๋ฐ ๊ด๋ จ ์ฝ๋๋ง ์ฐพ์ ์ ์์๊ณ ๋๋ฌด ๋งํ์ ํํฐ๋๊ผ ๊ฐ์ ์ฌ์ญค๋ณด์๊ณ ๋ฒํผ ํ์ฑํ๋ฅผ ์ด๋ป๊ฒ ํ๋ฉด ํ ์ ์๋์ง ์๋ ค์ฃผ์ ์ ๋์์ ๋ฐ์๋ค.
builder.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = true
๋ฒํผ ํ์ฑํ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ง๋ง ๊ทธ๋๋ ๊ฐ์ด ์กํ์ง ์์์ ์ด ์ฝ๋๋ฅผ ๊นํ๋ธ์ ๊ฒ์ํด์ ์ฝํ๋ฆฐ์ ์ฌ์ฉํด์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ ์์๋ค์ ์ฐพ์๋ณผ ์ ์์๋ค.
๋ช๋ช ์์๋ค์ MVVM์ ์ ์ฉํด์ ์์ฉํ๊ธฐ ์ด๋ ค์ ๊ณ ํ 3,4๊ฐ ์ฐพ์๋ณด๋ฉด์ ์ ์ฉํด๋ณด๋ ์ฌ์ฌ ๊ฐ์ด ์กํ๋ค.
listener ๋ณ์์ ๊ฐ์ ๋ฃ์ง ์๊ณ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค. ์ง๊ด์ ์ธ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ๊นํ์์ ๋ค๋ฅธ ์ฌ๋ ์ฝ๋ ์ฐธ๊ณ ๋ฅผ ํ๋ฉด์ ์ฝ๋ ๊ณต
private fun addGroupBtn() {
binding.ibtnAddContactAddGroup.setOnClickListener {
val dialogView = layoutInflater.inflate(R.layout.dialog_add_group, null)
val builder = AlertDialog.Builder(this)
.setTitle(getString(R.string.dialog_add_group))
.setMessage(getString(R.string.dialog_new_group))
.setView(dialogView)
.setIcon(R.mipmap.ic_launcher)
.setPositiveButton(getString(R.string.dialog_confirm_add_group)) { _, _ ->
//startupViewModel.checkAndReset(token, layout.newPassword.text.toString())
}
.setNegativeButton(getString(R.string.dialog_cancel_add_group)) { dialog, _ ->
dialog.cancel()
}
.setCancelable(true)
.show()
builder.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = false
// val alertDialog = builder.create()
val editGroup = dialogView.findViewById<EditText>(R.id.et_dialog_add_group)
editGroup?.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
val text = editGroup.text.toString()
when {
text.isBlank() -> editGroup.error =
getString(AddContactErrorMessage.EMPTY_GROUP_NAME.message)
text.overlappingGroup() -> {
editGroup.error = null
builder.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = true
}
else -> editGroup.error = getString(AddContactErrorMessage.OVERLAPPING_GROUP_NAME.message)
}
}
override fun afterTextChanged(p0: Editable?) {}
})
builder.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
newContactGroup = editGroup.text.toString()
ContactDatabase.addGroup(newContactGroup)
setGroupProvider()
shortToastMessage(this, R.string.dialog_new_group_added)
builder.dismiss()
}
}