[안드로이드 - 코틀린 ] Activity -> Fragment 데이터 전달 근데ViewPager2 와 Fragment를 곁들인
2023. 1. 16. 23:22ㆍAndroid
# 오늘의 문제점 현재 진행하는 프로젝트에서 1번 Activity에서 2번 Activity에 있는 viewpager2 fragment에 전달해야 되는 문제가 발생하였다
🤷🏻♂️ 문제 해결 과정
1. 기존에 이용하던 bundle을 이용하면 쉽게 해결 가능할 것이라 생각했다. 하지만 내 fragment는 다른 activity에 있는 viewpager2를 이용해 얹어진 fragment이다 그래서 실패
2. sharedpreferences이나 dataStore 이용해볼까 했지만 이건 아니지
3. 1번 문제에서 디버깅을 통해 확인해 본 결과 bundle 내부에는 데이터가 제대로 전달되는 것을 확인했다 그럼 무엇이 문제일까?
일단 해결방법으로는 Activity 내에서 bundle 내에 데이터를 넣어준 뒤 intent를 이용해 포장해서 데이터가 전달되야 되는 Activity로 데이터를 전송해 줬다
val bundle = Bundle()
val intent = Intent(this@PickActivity, MainActivity::class.java)
main_street.setOnClickListener {
bundle.putString("bundle_data", "1")
intent.putExtra("mainIntent", bundle)
startActivity(intent)
}
전송받은 액티비티(ViewPager가 있는 MainActivity)에는 FragmentAdapter에 해당 position에 가져온 값을 넣어주기만 하면 성공적으로 값을 전달할 수 있게 된다
private inner class FragmentAdapter(fa: FragmentActivity) : FragmentStateAdapter(fa) {
override fun getItemCount(): Int = 2
override fun createFragment(position: Int): Fragment {
return when (position) {
0 -> {
val mapFragment = MapFragment()
when {
intent.hasExtra("mainIntent") -> {
val bundle = intent.getBundleExtra("mainIntent")
mapFragment.arguments = bundle
}
}
mapFragment
}else -> {
UserPageFragment()
}
}
}
}
'Android' 카테고리의 다른 글
[ 안드로이드 - 코틀린 ] RecyclerView 클릭 위치를 Fragment에서 확인하기 (0) | 2023.02.09 |
---|---|
[ 안드로이드 - 코틀린 ] Dialog에 RatingBar 추가하기 (0) | 2023.01.28 |
[안드로이드 - 코틀린] SpeedView 라이브러리를 이용한 수치 측정 UI 만들기 (0) | 2022.12.15 |
[안드로이드 - 코틀린] MPAndroidChart 라이브러리를 이용해 Linechart 그래프 그리기 (정적) (0) | 2022.12.15 |
[안드로이드 - 코틀린] retrofit2 사용하기 (0) | 2022.11.21 |