프래그먼트 간 데이터 전달_Bundle

쿵ㅇ양·2024년 2월 11일
0

Android

목록 보기
17/30

데이터를 주고 받을 일이 매우매우 많다!!
특히 프래그먼트 간 데이터를 주고 받는 일이 많은데
액티비티랑 프래그먼트 간 데이터를 주고 받을때는 인텐트를 이용하면 되지만!

프래그먼트 간 데이터를 주고 받을때는 번들을 이용해야 한다.

프로필 아이디를 알아야 api를 호출할때 path에 넣어줄 수 있기 때문에 프로필 아이디를 주고 받는 코드가 꼭 필요해씀!!

데이터 주고 받기 : Bundle 이용할때

1) 이동할 Fragment 객체 생성
2) Bundle 객체 생성 및 데이터 저장
→ bundle.putXXXX(name, value)
3) Fragment객체.arguments = Bundle객체

1. 액티비티 -> 프래그먼트

1. 프래그먼트에서

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)

2. 액티비티에서

데이터를 넣어줄때 데이터만 파라미터로 넣어주기

val frontProfilePreviewFragment = FrontProfilePreviewFragment.newInstance(positionId.toInt())

2. fragment -> fragment

1. fragment1 에서 데이터 번들에 넣어주기

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()

2. fragment2에서 데이터 받기

val num1 = arguments?.getInt("num1")
val num2 = arguments?.getInt("num2")

이 두가지 방법 모두 다 같은 방법임!! 같은 말!!

결론은,,, 프래그먼트가 데이터를 받을때!! Bundle 이용하기!!!

=> 액티비티가 데이터 받을때는 더 간단한 Intent 이용!!

profile
개발을 공부하고 있는 대학생

0개의 댓글

관련 채용 정보