[Kotlin]enumの記述例(インテントでenumを受け渡す)


概要

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の項目を自動入力してくれます