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