Activity 값을 공유하는 방법을 알아보겠습니다.
with(bining) {
//Button을 클릭하면 ToggleButtonActivity가 시작되게끔 이벤트를 부착하였다.
btnstart.setOnClickListener {
val intent = Intent(this@StudyActivity14, ToggleButtonActivity::class.java)
//99를 보내면 끝났을때 99가 반환된다.
startActivityForResult(intent , 99)
}
val returnIntent = Intent()
returnIntent.putExtra("return", "빤쥬")
setResult(Activity.RESULT_OK , returnIntent)
finish()
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
//request code가 반환된다.
when (requestCode) {
99 -> {
//엘비스 플레슬리 : null이 아닐경우 뒤에것을 실행시킨다.
data?.getStringExtra("return")?.let { message ->
Toast.makeText(this, message, Toast.LENGTH_LONG).show()
}
}
100 -> {
}
}
}
}
Activity에서 Fragment로 전달하는 방법은 Bundle을 이용한다.
val bundle = Bundle()
bundle.putString("박하", "응꼬")
listFragment.arguments = bundle
val trasaction = supportFragmentManager.beginTransaction()
trasaction.add(R.id.senderfragment, listFragment)
trasaction.commit()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//이런식으로 값을 받을수 있다.
binding.textviewHaun.text = arguments?.getString("박하은")
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
with(binding) {
YES.setOnClickListener {
//val bundle = Bundle()
//집어넣을 데이터가 적을경우, bundleOf를 사용한다.
val bundle = bundleOf("senderkey" to "Yes")
//requset으로 받을수 있다.
setFragmentResult("requset", bundle)
}
buttonNo.setOnClickListener {
//val bundle = Bundle()
val bundle = bundleOf("senderkey" to "No")
setFragmentResult("requset", bundle)
}
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setFragmentResultListener("requset") { key, bundle ->
//getString이 없을 경우 스톰
bundle.getString("senderkey")?.let { value ->
binding.textView12.text = value
Log.d("Debug", value)
}
}
}