Fragment에서 onCreateView와 onViewCreated의 차이점
이 두 방법의 근본적인 차이점은 무엇입니까? TextView를 만들 때 성능을 위해 다른 하나를 사용할 수 있습니까?
편집 : 차이점은 무엇입니까
onCreateView() {
root = some view
View v = new View(some context);
root.add(v);
return root;
}
onViewCreated() {
View v = new View(some context);
getView().add(v);
}
에서 뷰를 초기화하는 동안 충돌이 발생 onCreateView
합니다.
레이아웃을 확장에서
onCreateView
해야 우리하지만findViewById
에서을 사용하여 다른 뷰를 초기화해서는 안됩니다onCreateView
.
모든 것이 초기화되지 않습니다. 따라서 항상 findViewById
에서 onViewCreated
(뷰가 완전히 생성 된 경우)을 사용하고 뷰를 매개 변수로 전달합니다 .
onViewCreated
생성 된 것을 확인합니다.
onViewCreated 안드로이드 문서
onCreateView
( android.view.LayoutInflater, android.view.ViewGroup
, android.os.Bundle
)가 반환 된 준비 , 저장된 상태가 뷰에 복원되기 전에 호출 합니다. 이렇게하면 뷰 계층 구조가 완전히 생성 될 수 있습니다. 그러나 조각의 뷰 계층 구조는이 시점에서 부모에 연결되지 않았습니다.
onViewCreated
onCreateView
(초기화하고 모든 개체를 만드는 방법) 완성 된 TextView
호출 성능 문제가 아닙니다.
개발자 사이트에서 :
onViewCreated (보기보기, savedInstanceState)
onCreateView (LayoutInflater, ViewGroup, Bundle)가 반환 한 후에, 처리 상태가보기에 복원되기 전에 호출됩니다. 이렇게하면 뷰 계층 구조가 완전히 생성 될 수 있습니다. 그러나 조각의 뷰 계층 구조는이 시점에서 부모에 연결되지 않았습니다.
의 필드에 하위보기를 할당하는 것이 좋습니다 onViewCreated
. 이는 즉 프레임이 자동 null을 수행하여 조각의 뷰가 제대로 생성되고 확장 된 워크 플로 (XML 레이아웃 파일을 사용하는 경우) 확인하기 때문입니다.
코드 조각 출처 : FragmentManger.java
// This calls onCreateView()
f.mView = f.performCreateView(f.getLayoutInflater(f.mSavedFragmentState), null, f.mSavedFragmentState);
// Null check avoids possible NPEs in onViewCreated
// It's also safe to call getView() during or after onViewCreated()
if (f.mView != null) {
f.mView.setSaveFromParentEnabled(false);
if (f.mHidden) f.mView.setVisibility(View.GONE);
f.onViewCreated(f.mView, f.mSavedFragmentState);
}
onCreateView
팽창 된 뷰를 반환합니다. OnViewCreated
바로 호출 onCreateView
되고 get은 부풀린 뷰에 매개 변수를 갖습니다. 반환 유형은 다음과 달라집니다.void
onCreateView()
onCreate()
활동 에 , 대한 단편이며 보기 작성 중에 실행됩니다 . 가 생성 된보기 후
onViewCreated()
실행됩니다 .
should I use one over the other for performance?
아니 . 성능 향상의 증거가 없습니다.
실제로 Framents onCreate()
에도 메소드가 있습니다.
그러나 거의 사용 되지 않습니다 (나는 그것을 사용 하지 않으며 좋은 사용 사례를 찾지 않습니다).
나는 항상 onCreateView()
조각에서 onCreate()
.
그리고 나는 만족합니다.
onCreateView는 조각에서 레이아웃을 만들고 뷰를 확장하는 데 사용됩니다. onViewCreated는 위의 방법으로 생성 된 뷰를 참조하는 데 사용됩니다. 마지막으로 onActivityCreated에서 리스너를 정의하는 것이 좋습니다.
제가 사용하는 주된 이유 onViewCreated
는 .NET Framework에 포함되어있는 뷰 계층 구조 인플레이션 / 생성 논리에서 초기화 논리를 분리하기 때문 onViewCreate
입니다. 다른 모든 성능 특성은 동일하게 시청합니다.
나는 이것들 사이의 주요 차이점은 kotlin.in onCreateView () 를 사용할 때마다 xml 파일에서보기 위해 액세스 할 때 findViewById 를 사용 하지만 onViewCreated 에서는 ID를 호출하여보기에 액세스 할 수 있습니다. .
'IT' 카테고리의 다른 글
Pandoc 마크 다운 페이지 나누기 (0) | 2020.08.28 |
---|---|
Django Rest Framework의 응답에 중개자 (모델을 통해) 포함 (0) | 2020.08.28 |
두 개의 인라인 블록을 같은 줄에 왼쪽과 오른쪽으로 정렬 (0) | 2020.08.28 |
특정 파일에서 충돌하는 병합을 위해 항상 내 로컬 버전을 선택하도록 git에 지시하는 방법은 무엇입니까? (0) | 2020.08.28 |
Oracle IN 절에 1000 개 이상의 값을 입력하는 방법 (0) | 2020.08.27 |