BottomSheetFragment -> activity 데이터 넘기기

이윤진·2023년 2월 20일
0

Android 개발

목록 보기
2/9

프로젝트를 하던 중, BottomSheetFragment에서 Activity로 데이터를 보낼 일이 생겼다.

처음에는 fragment에서 activity를 넘기는 거니까 intent를 사용하려고 했었지만, activity로 돌아왔을 때 이전에 넘겨서 받은 내용들이 사라지는 문제가 있었다. 생명주기로 이를 고쳐보려고 하였지만, 잘 되지 않았다.

그래서 그동안 RecyclerView Adapter에서 사용했던 방법과 동일한 방식으로 문제를 해결하려고 했다.

이는 interface를 활용한 방식으로, 먼저 BottomSheetFragment에서 interface와 함수를 정의한다.
그리고 activity에서 정의한 함수를 받아올 함수를 만들어서 작동하게 한다.

// 인터페이스 정의
interface OnActionCompleteListener {
        fun onActionComplete(item: IncomeNoteList)
    }
private lateinit var listener: OnActionCompleteListener

// activity에서 정의한 함수를 받아올 함수
fun setOnActionCompleteListener(listener: OnActionCompleteListener) {
        this.listener = listener
    }
// activity에서 정의한 함수
val listener = object : AddSpendingIncomeFragment.OnActionCompleteListener{
            override fun onActionComplete(item: IncomeNoteList) {
                if (item != null){
                    dataList.add(item)
                }

                noteRecycler.adapter?.notifyDataSetChanged()
            }
        }

이렇게 BottomSheetFragment에서 데이터를 인자로 받아서, activity에서 활용할 수 있게 하였다.
이 방법으로는 activity의 이전 데이터를 잃지 않으면서 새로운 데이터를 추가할 수 있었다.

profile
Android/Flutter 개발

0개의 댓글