데이터를 주고 받을 일이 매우매우 많다!!
특히 프래그먼트 간 데이터를 주고 받는 일이 많은데
액티비티랑 프래그먼트 간 데이터를 주고 받을때는 인텐트를 이용하면 되지만!
프래그먼트 간 데이터를 주고 받을때는 번들을 이용해야 한다.
프로필 아이디를 알아야 api를 호출할때 path에 넣어줄 수 있기 때문에 프로필 아이디를 주고 받는 코드가 꼭 필요해씀!!
1) 이동할 Fragment 객체 생성
2) Bundle 객체 생성 및 데이터 저장
→ bundle.putXXXX(name, value)
3) Fragment객체.arguments = Bundle객체
class MyFragment : Fragment() {
companion object {
fun newInstance(positionId: Int): FrontProfilePreviewFragment {
val fragment = FrontProfilePreviewFragment()
val args = Bundle().apply {
putInt("positionId", positionId)
}
fragment.arguments = args
return fragment
}
}
// 데이터 받을때
val positionId = arguments?.getInt("positionId", -1)
데이터를 넣어줄때 데이터만 파라미터로 넣어주기
val frontProfilePreviewFragment = FrontProfilePreviewFragment.newInstance(positionId.toInt())
var fragment2 = Fragment2()
var bundle = Bundle()
bundle.putInt("num1",1)
bundle.putInt("num2",2)
//fragment의 arguments에 데이터를 담은 bundle을 넘겨줌
fragment2.arguments = bundle
//이 부분은 없어도 ㄱㅊ 걍 프래그먼트 전환하는코드
activity?.supportFragmentManager!!.beginTransaction()
.replace(R.id.view_main, fragment2)
.commit()
val num1 = arguments?.getInt("num1")
val num2 = arguments?.getInt("num2")
=> 액티비티가 데이터 받을때는 더 간단한 Intent 이용!!