프래그먼트를 생성할 때 기본 생성자만 사용하는 것이 권장되는 이유는 무엇입니까?
3505 단어 android
오늘 이 블로그에서는 Android 인터뷰 질문에 대해 논의할 것입니다.
질문: 프래그먼트를 생성할 때 기본 생성자만 사용하는 것이 권장되는 이유는 무엇입니까?
Android 인터뷰에서 자주 묻는 질문 중 하나입니다.
이 문서는 원래 amitshekhar.me에 게시되었습니다.
답을 토론해 봅시다.
따라서 방향이 변경되는 경우와 같이 Android 프레임워크가 Fragment를 재생성하기로 결정할 때마다. Android는 Fragment의 인수 없는 생성자를 호출합니다.
인수로 생성자를 호출할 수 없는 이유는 Android 프레임워크가 우리가 생성한 생성자가 무엇인지 모르기 때문입니다. 그래서 할 수 없습니다.
Fragment의
newInstance
를 만드는 권장 방법을 살펴보겠습니다.코드는 다음과 같습니다.
private const val EXTRA_PDF_ID = "EXTRA_PDF_ID"
fun newInstance(pdfID: Long): PdfFragment {
val fragment = PdfFragment()
val bundle = Bundle()
bundle.putLong(EXTRA_PDF_ID, pdfID)
fragment.arguments = bundle
return fragment
}
여기서 이
setArguments
방법이 매우 중요합니다. fragment.arguments = bundle
Bundle 내부에 전달하고 있음을 알아야 합니다. 따라서 이 방법
newInstance
을 사용하여 인스턴스를 처음 생성할 때. Android 프레임워크는 번들을 추출하여 저장할 수 있습니다.따라서 Orientation이 변경되는 경우 Android Framework는 인수 없는 생성자를 사용하여 새 프래그먼트를 다시 생성하고 이전에 번들을 저장했기 때문에 번들을 프래그먼트에 연결할 수 있습니다.
그리고 나중에 다시
onCreate()
를 이렇게 사용하여 getArguments()
메서드에서 해당 데이터에 액세스할 수 있습니다.val pdfID = arguments?.getLong(EXTRA_PDF_ID)
즉, 시스템이 프래그먼트를 복원할 때 자동으로 번들을 복원합니다. 그리고 우리는 프래그먼트가 초기화되었던 것과 동일한 상태로 프래그먼트의 상태를 복원할 수 있을 것입니다.
이제 기본 생성자만 사용하여 Fragment를 생성하는 것이 권장되는 이유는 무엇입니까?
지금은 그게 다입니다.
감사
Amit Shekhar
다음에서 나와 연결할 수 있습니다.
Reference
이 문제에 관하여(프래그먼트를 생성할 때 기본 생성자만 사용하는 것이 권장되는 이유는 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/amitiitbhu/why-is-it-recommended-to-use-only-the-default-constructor-to-create-a-fragment-54g1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)