프래그먼트 분리와 제거의 차이점은 무엇입니까?
A에 대한 안드로이드 문서에서 하여 FragmentTransaction 나는이 매우 많은 방법을 발견 : detach
와 remove
. 거기에 대한 설명은 얼마나 많은지를 제공하지 않을 것입니다.
모든 것이 두 방법의 차이점은 무엇입니까?
분리 메소드는 UI에서 프래그먼트를 제거하지만 프래그먼트 관리자가 상태를 유지합니다. 이는 ViewHierarchy를 사용하여 메소드를 첨부하여 호출하여 프래그먼트를 할 수 있음을 의미합니다.
제거는 조각 인스턴스를 다시 수 없음을 의미합니다. 조각 트랜잭션에 다시 추가해야합니다.
소스 게임
Fragment가 분리되면 onPause, onStop 및 onDestroyView 메소드가 (순서대로) 만 호출됩니다. 반면에 Fragment가 제거되면 onPause, onStop, onDestroyView, onDestroy 및 onDetach 메소드가 순서대로 호출됩니다. 모든 첨부 첨부 할 때 Fragment의 onCreateView, onStart 및 onResume 메소드 만 호출됩니다. 추가 할 때 Fragment의 onAttach, onCreate, onCreateView, onStart 및 onResume 메소드가 (순서대로) 호출됩니다. – 아딜 후세인
메시지 보드의 Google 엔지니어에 따르면 조각 관리 방법의 이름은 매우 혼란 스럽습니다 (위의 설명). 나는 실제로 일이 어떻게 작동하는지 알아 내기 위해 작은 견본을 만들었습니다. 내 결과는 다음과 달라집니다. 내가 틀렸다면 자유롭게 고쳐주세요.
처음에 활동에 단편을 추가 비용을 사용하십시오. getFragmentManager (). beginTransaction (). 추가 (R.id.container, mFragment) .commit ().
연관 활동을 프래그먼트와 연관 뷰를 프래그먼트와 연관.
결과 수명주기 이벤트 및 기타 중요한 메소드 리턴 값은 다음과 같습니다.
onAttach()
onCreate()
onCreateView()
onViewCreated()
onActivityCreated()
onViewStateRestored()
onStart()
onResume()
mFragment.getView() == null: false
mFragment.getActivity() == null: false
활동에서 프래그먼트를 구매하신 다음 사용하십시오. getFragmentManager (). beginTransaction (). 제거 (mFragment) .commit ().
이것은 뷰 또는 활동과의 연관성을 제거합니다.
결과 수명주기 이벤트 및 기타 중요한 메소드 리턴 값은 다음과 같습니다.
onPause()
onStop()
onDestroyView()
onDestroy()
onDetach()
mFragment.getView() == null: true
mFragment.getActivity() == null: true
여기에 조각을 다시 추가했습니다.
다음을 사용하십시오. getFragmentManager (). beginTransaction (). 분리 (mFragment) .commit ().
이렇게하면 View와의 연결이 제거됩니다. Activity와의 연결은 유지됩니다.
결과 수명주기 이벤트 및 기타 중요한 메소드 리턴 값은 다음과 있습니다.
onPause()
onStop()
onDestroyView()
mFragment.getView() == null: true
mFragment.getActivity() == null: false
활동에 분리 된 단편을 다시 첨부하려는 getFragmentManager (). beginTransaction (). attach (mFragment) .commit ()을 사용하십시오.
조각과 딱 새보기를 만들고 활동 연결을 유지합니다.
결과 수명주기 이벤트 및 기타 중요한 메소드 리턴 값은 다음과 있습니다.
onCreateView()
onViewCreated()
onActivityCreated()
onViewStateRestored()
onStart()
onResume()
mFragment.getView() == null: false
mFragment.getActivity() == null: false
참고해야 할 다른 중요한 사항 : Fragment를 분리 한 다음 attach () 대신 add ()를 사용하여 다시 추가해야 할 다른 중요한 사항이 없습니다.
add () 대신 attach ()를 사용하여 remove ()를 사용하여 제거 된 조각을 추가하지 않습니다.
getView ()가 null을 반환하면 Fragment는 여전히 마지막으로 만든 View에 대한 내부 참조가 있습니다. 이보기는 더 이상 유효하지 않습니다.
'IT' 카테고리의 다른 글
NuGet 패키지에서 프로젝트 디렉토리로 기본 파일 추가 (0) | 2020.07.29 |
---|---|
인터페이스 상수의 사용은 무엇입니까? (0) | 2020.07.29 |
std :: function 및 std :: bind : 무엇이며 언제 어디에서 가지고 있습니까? (0) | 2020.07.29 |
HashSet은 요소와 동등성을 어떻게 비교합니까? (0) | 2020.07.29 |
CSS 배경 이미지 대체 속성 (0) | 2020.07.29 |