📌 FragmentManager

1) FragmentManager 란?

  • Activity Fragment의 중간에서 서로를 이어주는 역할을 하는 것

2) FragmentManager 의 역할

🔻 fragment transaction

  • fragment 추가, 삭제, 교체 등의 작업 수행할 수 있도록 하고, 행해진 transaction의 상태를 fragment 백스택에 저장할 수 있도록 함

🔻 Activity와의 통신

  • 단일 fragment에 대해 세부적인 작업 가능(fragment 내의 구성 요소들 하나하나에 접급할 수 있도록 함)
  • Activity에서 특정 이벤트가 발생했을 때, fragment에서 적절한 동작을 할 수 있도록 함

3) Fragment 에서 접근

  • 프래그먼트는 하나 이상의 프래그먼트를 담을 수 있다.
  • 프래그먼트 내에서
    ▶️ 자식 프래그먼트를 관리하는 FragmentManager에 접근하기 위해서는
    getChildFragmentManager() 사용
    ▶️ 자식 프래그먼트에서 부모의 FragmentManager에 접근하기 위해서는
    getParentFragmentManager() 사용

▶️ 왼쪽 Example1의 host fragment는 2개의 자식 프래그먼트를 담고 있고,
▶️ 오른쪽 Example2의 host fragment는 1개의 자식 프래그먼트를 담고 있다.( 예를 들면, 프래그먼트 내에서 viewpager2를 사용하는 경우)


📌 각 호스트는 자식 프래그먼트를 관리하는 FragmentManager을 가지고 있다. 여기에 접근함으로써 사용자에게 보여지는 프래그먼트를 관리(조작)할 수 있다.

▶️ 가장 바깥에 위치하는 Host Activity(Fragment Activity)는 자식 프래그먼트인 Home과 Profile 프래그먼트를 관리하기 위해 supportFragmentManager로 fragmentManager에 접근
▶️ Home 또는 Profile 프래그먼트인 Host Fragment는 자식 프래그먼트(Child Fragment(s))를 관리하기 위해 childFragmentManager 메서드 사용
▶️ 자신들을 관리하는 FragmentManager에 접근하기 위해서는 parentFragmentManager 메서드 사용

FragmentManager를 부르는 메서드는
1) 현재 이것을 부르는 위치가 어디인지 : Activity인지 Fragment인지 등
2) 어떤 FragmentManager를 부르는지 : 자식인지 부모인지
에 따라 다르다.

참고 사이트 : https://velog.io/@ejjjang0414/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-Fragment-manager

 

[안드로이드] FragmentManager?

앱 개발시 거의 반드시 사용하는 FragmentManager 가 무슨 일을 하는지, 어디서 어떻게 사용하면 되는지 알아봅시다.

velog.io

📌 ClassCastException

SearchView를 썼을 때, 빨간색으로 오류가 떠서androidx.appcompat.widget.SearchView 를 사용하여 검색창을 구현했다.
-> SearchView가 있는 화면으로 이동하는 button을 누르면 자꾸 앱이 강제 종료가 됨.
-> 다시 SearchView로 바꾸고 실행해 보니 정상적으로 실행되었다.(빨간색 오류는 사라지지 않음)


📌 SearchView queryHint 적용 안됨

▶️ 코드 수정 전


▶️ 코드 수정 후


✔️ 결론 : 

app:queryHint="메이트의 id를 입력해 주세요."

대신

anodroid:queryHint="메이트의 id를 입력해 주세요."

로 바꾸니 해결

 

📌 imagebutton 사용시, image가 깨지거나 회색 배경이 되는 경우

android:adjustViewBounds="true"
android:background="@android:color/transparent"
android:scaleType="fitCenter"

위 코드를 넣으면 정상적으로 적용이 된다.

1) 이미지 깨짐 현상

2) 이미지 회색 현상

☑️ 코드 적용 후

 

📌 wrap_content

  • 폭과 높이가 글자가 딱 맞게 들어갈 정도로 설정

📌 match_parent

  • 자신의 부모에 폭이나 높이를 맞추는 것

🔹 폭: wrap_content + 높이: wrap_content

  • 폭과 높이가 글자 크기에 맞게 맞춰짐


🔹 폭: match_content + 높이: wrap_content

  • 폭은 부모의 폭과 맞춰서, 높이는 글자 크기에 맞게 맞춰짐


🔹 폭: match_content + 높이: match_content

  • 폭과 높이가 모두 부모의 크기에 맞춰짐

 

 

 

+ Recent posts