IT

Fragment에서 onCreateView와 onViewCreated의 차이점

lottoking 2020. 8. 28. 19:33
반응형

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)가 반환 된 준비 , 저장된 상태가 뷰에 복원되기 전에 호출 합니다. 이렇게하면 뷰 계층 구조가 완전히 생성 될 수 있습니다. 그러나 조각의 뷰 계층 구조는이 시점에서 부모에 연결되지 않았습니다.


onViewCreatedonCreateView(초기화하고 모든 개체를 만드는 방법) 완성 된 TextView호출 성능 문제가 아닙니다.

개발자 사이트에서 :

onViewCreated (보기보기, savedInstanceState)

onCreateView (LayoutInflater, ViewGroup, Bundle)가 반환 한 후에, 처리 상태가보기에 복원되기 전에 호출됩니다. 이렇게하면 뷰 계층 구조가 완전히 생성 될 수 있습니다. 그러나 조각의 뷰 계층 구조는이 시점에서 부모에 연결되지 않았습니다.

출처 : Fragment # onViewCreated


의 필드에 하위보기를 할당하는 것이 좋습니다 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를 호출하여보기에 액세스 할 수 있습니다. .

참고 URL : https://stackoverflow.com/questions/25119090/difference-between-oncreateview-and-onviewcreated-in-fragment

반응형