앱에 프래그먼트를 추가하다가 Unable to instantiate fragment 오류를 만났다
처음 보는 오류에 당황하다가 검색해서 나온 정답은
프래그먼트는 기본 생성자만 써야 한다고 하는 게 아닌가?
다시 말해
class TestFragment(something:Int):Fragment()로 프래그먼트를 만들고
val something = 1
val testFragment = TestFragment(something)
처럼 쓰는 게 불가능하다는 것
근데 막상 작성해보면 오류는 나지 않을 것이다
단순히 프래그먼트를 표시할 땐 parameter를 넘겨도 되는 듯하다(권장하진 않는다)
그럼 저 오류는 어디서 만나게 되는 걸까?
나의 경우는 MainActivity에서 생성만 해두고 사용하지 않은 프래그먼트(troubleFragment)가
//유저가 앱을 설치 후 처음 실행할 때만 열림
OtherActivity에서 작업 후 그 영향으로 MainActivity에 변화가 생길 때 오류가 발생했다
다른 프래그먼트들과 troubleFragment 사이에 차이점은 MainActivity에서 transaction 되냐 안되냐의 차이였던 것
지금은 이점을 인지하고 코드를 전면 수정했는데
차라리 배포 전에 알게 돼서 정말 다행이라고 생각하는 중..
이번 앱을 제작하면서 진짜 많이 배우는 거 같아서 공부하는 맛이 난다
'Android(Kotlin)' 카테고리의 다른 글
[절대 잊지말자] Activity에서 transaction된 Fragment에 접근할때 (0) | 2021.06.16 |
---|---|
ViewPager2 에 elevation이 적용 안될때 (0) | 2021.06.15 |
기기 자체 설정의 글씨 크기에 대응하는 레이아웃 짜기 - textView (0) | 2021.06.13 |
Room 사용시 build.gradle 에서 kapt 오류가 날때 (0) | 2021.05.26 |
복수의 버튼에서 같은 이벤트 사용 (0) | 2021.05.17 |