IT

프래그먼트 분리와 제거의 차이점은 무엇입니까?

lottoking 2020. 7. 29. 07:35
반응형

프래그먼트 분리와 제거의 차이점은 무엇입니까?


A에 대한 안드로이드 문서에서 하여 FragmentTransaction 나는이 매우 많은 방법을 발견 : detachremove. 거기에 대한 설명은 얼마나 많은지를 제공하지 않을 것입니다.

모든 것이 두 방법의 차이점은 무엇입니까?


분리 메소드는 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에 대한 내부 참조가 있습니다. 이보기는 더 이상 유효하지 않습니다.

참고 URL : https://stackoverflow.com/questions/9156406/whats-the-difference-between-detaching-a-fragment-and-removing-it

반응형