반응형
프래그먼트 빈생성자가 없어서 생긴 문제
- 다이얼로그 띄워놓고 화면 리사이즈하니 Exception 발생
접근방법 :
- 프래그먼트 빈생성자가 없어서 생긴 문제 같다로 접근
- 제이씨가 맵핑파일을 전달해주어 난독화를 풀어서 확인을 해보기로 접근.
맵핑된 파일에서
oi.b → 로 검색을 하면, 어떠한 클래스로 맵핑 되는지 알 수 있다고 함.
디버깅하고있는 APK 버전에서 역추적을 해야한다고 함.(계속 바뀌기 때문)
CustomProgressDialog를 발견했고, DialogFragment()를 상속받고 있음.
테스트 방법
- 아무곳에 CustomProgressDialog에 파라미터가 있는 생성자로 테스트
- 다른앱들을 25개넘게 사용
- 나중에 확인했지만 다이얼로그 띄워놓고 화면 리사이즈하니 동일한 이슈 발생
원인
- 프래그먼트가 먼저 실행된 상태에서 백그라운드로 내려가고 다른앱들 실행
- 메모리를 다른곳에서 사용 → 기존에 가지고 있던 메모리를 삭제.
- 프래그먼트는 재생성이 될 때 빈 생성자로 생성 된다고함.
- 인자가 들어간 프래그먼트이면 빈생성자가 없기 때문에 Exception이 발생.
해결 방법
- 빈 생성자로 생성하게 하고 파라미터를 인자로 설정하게 하자
확인해보니 다이얼로그 띄워놓고 화면 리사이즈하니 동일한 이슈 발생
UI가 변경되는 상황이 오면
내부에서는 빈 생성자를 생성해야하는데 그게 없어서 죽는 것 같다.
class CustomProgressDialg private constuctor(val uiContext: Context) : DialogFragment()
에서 아래 빈 생성자 추가
constructor(): this(Application.context) {}
constructor(): this(Application.context) {} 로 빈 생성자 생성
참조 :
회사사람 Bottle의 내용 전달
반응형
'안드로이드 > 에러' 카테고리의 다른 글
binding시 release 모드에서 에러가 발생할 때 (0) | 2023.09.20 |
---|---|
안드로이드 스튜디오 AVD is already running 오류 해결하기 (0) | 2023.08.01 |
웹뷰에서 base64 이미지 받을때 에러 (ScopeStorage Primary directory) (0) | 2023.04.10 |
[Android] Fragment 에서 ActivityResultLauncher 사용시 앱 죽는 문제 (0) | 2022.12.06 |
Hilt 의존성 주입과 Fragment 문제 (0) | 2022.12.05 |