개발노트/Kotlin

6주차 3일 다이얼로그

시계속세상은아직돌아가는중 2023. 8. 16. 20:42

다이얼로그

fun showMBTIDialog(title: String) {
        val builder: AlertDialog.Builder = AlertDialog.Builder(this)
        val inflater = layoutInflater
        val dialogView = inflater.inflate(R.layout.custom_mbti_dialog, null)
        val input: EditText = dialogView.findViewById(R.id.custom_edit_text)

        builder.setTitle(title)
        builder.setView(dialogView)

        builder.setPositiveButton("확인") { dialog, _ ->
            val inputText = input.text.toString()

            if (isMBTI(inputText)) mbti.setText(inputText)
            else toast("올바른 mbti를 입력해주세요")

            dialog.dismiss()
        }

        builder.setNegativeButton("취소") { dialog, _ ->
            dialog.dismiss()
        }

        val dialog = builder.create()
        dialog.show()
    }

안드로이드 스튜디오에서 기본적으로 제공하는 형태로, 이 다이얼로그를 커스텀해서 사용할 수 있다.

해당 다이얼로그는 버튼 두 개로 이루어졌는데,

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/custom_edit_text"
        android:layout_width="match_parent"
        android:layout_height="75dp"
        android:textSize="25dp"
        android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        android:inputType="textCapCharacters"
        android:maxLength="4"
        android:maxLines="1"/>


</LinearLayout>

해당 xml을 받아 EditText를 넣어주었다.

 

            if (isMBTI(inputText)) mbti.setText(inputText)
            else toast("올바른 mbti를 입력해주세요")

해당 조건식에 의해서 입력된 MBTI가 옳바른 형태라면, mbti부분을 해당 텍스트로 채워주고

아니라면 toast메세지를 띄우고 닫는다.

 

MBTI의 판정은

 

  private fun isMBTI(mbti: String): Boolean {
        return mbti.matches(Regex("[EI][SN][TF][JP]"))
    }

의 함수를 사용하였다.

 

 
    변수.matches(Regex("판단할 것들"))

("")안의 것이 변수와 matches된다면 true를 아니면 false를 내보내는 메소드다.