[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)
}
}
}
補足
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)
}
}
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の項目を自動入力してくれます
Author And Source
この問題について([Kotlin]enumの記述例(インテントでenumを受け渡す)), 我々は、より多くの情報をここで見つけました https://qiita.com/kazuma_f/items/ca2d76b94dd57dd5f0bb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .