[Kotlin] enum의 기술 예 (인텐트에서 enum을 전달한다)

8071 단어 Kotlin

개요



enum을 사용하면 코드를 읽을 수 있고 실수를 줄일 수 있습니다.

이번에는 enum으로 정의된 데이터를 2개의 Activity간에 전달하는 샘플 코드를 공유하고 싶습니다.

데이터 전달 Activity



class MainActivity : AppCompatActivity() {
    public enum class MyHandEnum{
        GU,
        CHOKI,
        PA
    }

    private lateinit var binding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.gu.setOnClickListener{
            openActivity(MyHandEnum.GU)
        }
        binding.choki.setOnClickListener{
            openActivity(MyHandEnum.CHOKI)
        }
        binding.pa.setOnClickListener{
            openActivity(MyHandEnum.PA)
        }
    }

    private fun openActivity(myHand: MyHandEnum){
        val intent = Intent(this,ResultActivity::class.java)
        intent.putExtra("MY_HAND",myHand)
        startActivity(intent)
    }
}

데이터 수신 Activity



class ResultActivity : AppCompatActivity() {
    private lateinit var binding: ActivityResultBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityResultBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val myHand: MainActivity.MyHandEnum = intent.getSerializableExtra("MY_HAND") as MainActivity.MyHandEnum

        when(myHand) {
            MainActivity.MyHandEnum.GU -> binding.myHandImage.setImageResource(R.drawable.gu)
            MainActivity.MyHandEnum.CHOKI -> binding.myHandImage.setImageResource(R.drawable.choki)
            MainActivity.MyHandEnum.PA -> binding.myHandImage.setImageResource(R.drawable.pa)
        }
    }
}

보충



enum을 분기시키는 when()을 기술하고 싶을 때는

when(~){  까지 입력한 시점에서 「Alt+Enter」를 누르면 enum의 항목을 자동 입력해 줍니다

좋은 웹페이지 즐겨찾기