Android(Kotlin)

프래그먼트는 왜 parameter를 받으면 안되는걸까?

E.I.T.U 2021. 6. 12. 23:49

앱에 프래그먼트를 추가하다가 Unable to instantiate fragment 오류를 만났다

처음 보는 오류에 당황하다가 검색해서 나온 정답은

프래그먼트는 기본 생성자만 써야 한다고 하는 게 아닌가?

 

다시 말해

class TestFragment(something:Int):Fragment()로 프래그먼트를 만들고

 

val something = 1

val testFragment = TestFragment(something)

처럼 쓰는 게 불가능하다는 것

 

근데 막상 작성해보면 오류는 나지 않을 것이다

단순히 프래그먼트를 표시할 땐 parameter를 넘겨도 되는 듯하다(권장하진 않는다)

그럼 저 오류는 어디서 만나게 되는 걸까?

 

나의 경우는 MainActivity에서 생성만 해두고 사용하지 않은 프래그먼트(troubleFragment)가

                                                                             //유저가 앱을 설치 후 처음 실행할 때만 열림

OtherActivity에서 작업 후 그 영향으로 MainActivity에 변화가 생길 때 오류가 발생했다

다른 프래그먼트들과 troubleFragment 사이에 차이점은 MainActivity에서 transaction 되냐 안되냐의 차이였던 것

 

지금은 이점을 인지하고 코드를 전면 수정했는데

차라리 배포 전에 알게 돼서 정말 다행이라고 생각하는 중..

이번 앱을 제작하면서 진짜 많이 배우는 거 같아서 공부하는 맛이 난다