[TIL]221107 - Kotlin Intent Activity

Jimin·2022년 11월 7일
0
post-custom-banner

caller - callee
버튼 두 개를 생성하고 각 버튼이 눌릴 때 마다 지정된 사진이 출력되도록
Q) 이 때 필요한 액티비티 개수는?
-> 2개!

기본적으로 3개를 만들어야 하지만 만약 버튼 개수가 많아지거나 리스트의 경우에는 각각 액티비티를 만들기 너무 번거로움. 그래서 액티비티 템플릿을 만들어서 데이터만 넘겨오도록 해주면 효율적으로 사용 가능함.


  • caller는 키와 값을 putExtra를 통해서 넘겨주고 이때 caller와 callee는 키, 값을 공유해야 함!
  • callee에서는 키를 통해 값을 얻어낼 수 있음

실습

  • 건담 버튼 클릭

  • 자쿠 버튼 클릭

//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)
    }
}
post-custom-banner

0개의 댓글