caller - callee
버튼 두 개를 생성하고 각 버튼이 눌릴 때 마다 지정된 사진이 출력되도록
Q) 이 때 필요한 액티비티 개수는?
-> 2개!
기본적으로 3개를 만들어야 하지만 만약 버튼 개수가 많아지거나 리스트의 경우에는 각각 액티비티를 만들기 너무 번거로움. 그래서 액티비티 템플릿을 만들어서 데이터만 넘겨오도록 해주면 효율적으로 사용 가능함.
실습
건담 버튼 클릭
자쿠 버튼 클릭
//MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// setContentView(R.layout.activity_main)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.btnGundam.setOnClickListener {
val intent = Intent(this, ImageActivity::class.java)
intent.putExtra("image", "gundam") //intent data 전달 시 사용
startActivity(intent)
}
binding.btnZaku.setOnClickListener {
val intent = Intent(this, ImageActivity::class.java)
intent.putExtra("image", "zaku")
startActivity(intent)
}
}
}
//ImagaActivity.kt
class ImageActivity : AppCompatActivity() {
private lateinit var binding: ActivityImageBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityImageBinding.inflate(layoutInflater)
setContentView(binding.root)
//Toast.makeText(this, intent.getStringExtra("image"), Toast.LENGTH_LONG).show()
val res = when (intent.getStringExtra("image")) {
"gundam" -> R.drawable.gundam
"zaku" -> R.drawable.zaku
else -> R.drawable.ic_launcher_foreground
}
binding.imgGundam.setImageResource(res)
}
}