Fragment 에서 뒤로가기를 누른것이 Activity에서의 방법과는 차이가 있었다.
일단, callback을 통해서 진행했어야 했는데, 좀 더 정확하게 알아볼 필요가 있어보이지만,
일단은 activity에서 컨트롤하는 것으로 생각하고 있다.
다음은 내가 찾아본 코드이다.
/* 프래그먼트 뒤로가기 버튼 컨트롤 방안 : callback함수를 활용하는 것이다.
그러나, activity 에서 충분히 컨트롤이 가능한 것 같다.*/
private lateinit var backPressCallBack : OnBackPressedCallback // 상단에 선언해준다.
override fun onAttach(context: Context) { // 화면이 이동은 안되지만, 값은 변동할 수 있다.
super.onAttach(context) // 화면이동은 다시 설정하든, 아니면 라이프사이클을 내가 잘 모르는것 같다.
backPressCallBack = object : OnBackPressedCallback(true){
override fun handleOnBackPressed() {
val model = ViewModelProvider(requireActivity()).get(OrderViewModel::class.java)
val len = model.resultData.size
for(i in (len-1) downTo (len-3) ){
model.resultData.removeAt(i)
}
Log.d(Pear2.IK, "$context 뒤로가기!! : ${model.resultData}")
}
}
requireActivity().onBackPressedDispatcher.addCallback(backPressCallBack)
}
override fun onDetach() {
super.onDetach()
backPressCallBack.remove()
}
위의 코드가 진행되면, 내가 했을 때는 뒤로가기를 눌렀을 경우 화면이동이 안되고, 내가 원하는 데이터 수정만 됐었다.
아마, 정확한 사용법을 이해하지 못해서 그런듯 하다.
아무튼 onattach에서 등록? 이라는 것을 하고
activity에 뒤로가기가 눌렸다고 인식될때 콜백으로 불러지는 듯하다.
그리고나서 ondetach를 통해 제거를 꼭 해줘야 한다고 한다.
728x90
반응형
'Programming > Android' 카테고리의 다른 글
Button - ViewBinding (0) | 2021.11.18 |
---|---|
res/layout 나누기 (0) | 2021.11.01 |
Coroutines in Kotlin (0) | 2021.09.30 |