[안드로이드스튜디오(AndroidStudio)] 체크박스와 토스트 메시지 (Kotlin) .2

U-G-1·2022년 7월 19일
0

안드로이드[Android]

목록 보기
8/9

🐰 activity_main.xml 코드

체크박스 세개 생성

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <CheckBox
            android:id="@+id/checkApple"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="사과" />

        <CheckBox
            android:id="@+id/checkOrange"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="오렌지" />

        <CheckBox
            android:id="@+id/checkBanana"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="바나나" />
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>


🐰 MainActivity.kt 코드 ver.1

class MainActivity : AppCompatActivity() {

    lateinit var checkApple : CheckBox
    lateinit var checkOrange : CheckBox
    lateinit var checkBanana : CheckBox



    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        checkApple = findViewById(R.id.checkApple)
        checkOrange = findViewById(R.id.checkOrange)
        checkBanana = findViewById(R.id.checkBanana)


        checkApple.setOnCheckedChangeListener { buttonView, isChecked ->
            if (isChecked) { // 체크가 되었는지 확인
                // 되었으면 토스트 메시지 전송
                Toast.makeText(applicationContext, "사과", Toast.LENGTH_SHORT).show()
            }
        }

        checkOrange.setOnCheckedChangeListener { buttonView, isChecked ->
            if (isChecked) {
                Toast.makeText(applicationContext, "오렌지", Toast.LENGTH_SHORT).show()
            }
        }

        checkBanana.setOnCheckedChangeListener { buttonView, isChecked ->
            if (isChecked) {
                Toast.makeText(applicationContext, "바나나", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

🐰 MainActivity.kt 코드 ver.2 (listner 통합)

class MainActivity : AppCompatActivity() {

    lateinit var checkApple : CheckBox
    lateinit var checkOrange : CheckBox
    lateinit var checkBanana : CheckBox

    // 리스너를 생성해서 통합
    // 변수 선언
    var listner = CompoundButton.OnCheckedChangeListener { buttonView, isChecked ->
        if (isChecked){
            // 어떤 아이디인지 확인
            when(buttonView.id){
                R.id.checkApple -> Toast.makeText(applicationContext, "사과", Toast.LENGTH_SHORT).show()
                R.id.checkOrange -> Toast.makeText(applicationContext, "오랜지", Toast.LENGTH_SHORT).show()
                R.id.checkBanana -> Toast.makeText(applicationContext, "바나나", Toast.LENGTH_SHORT).show()

            }
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        checkApple = findViewById(R.id.checkApple)
        checkOrange = findViewById(R.id.checkOrange)
        checkBanana = findViewById(R.id.checkBanana)


        checkApple.setOnCheckedChangeListener (listner)

        checkOrange.setOnCheckedChangeListener (listner)

        checkBanana.setOnCheckedChangeListener (listner)
    }
}

🐰 결과

다음과 같이 토스트메시지가 뜬다

0개의 댓글