2022. 12. 8. 02:03ㆍ_Study/AndroidStudio
11-3 프래그먼트 – 액티비티처럼 동작하는 뷰 🐇¸.•*¨*•¸.•*¨*•¸.•*¨*•¸.•*¨*•
해당 자료는 강의 학습자료이며, Do it! 깡샘의 안드로이드 앱 프로그래밍 with 코틀린을 참고하였습니다.
프래그먼트 소개
프래그먼트가 다른 뷰와 다른 점은 액티비티처럼 동작한다는 것
액티비티에 구현되는 모든 내용은 프래그먼트 클래스에도 작성할 수 있다.
프래그먼트 구현
프래그먼트는 androidx.fragment 라이브러리에서 제공
프래그먼트는 Fragment를 상속받아 작성하는 클래스
최소한으로 작성해야 하는 함수는 onCreateView()
이 함수가 자동 호출되며 반환한 View 객체가 화면에 출력
OneFragment.kt
class OneFragment : Fragment() {
lateinit var binding : FragmentOneBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentOneBinding.inflate(inflater,container,false)
return binding.root
}
}
액티비티의 레이아웃 XML에 등록하여 프래그먼트 출력 (방법1)
- <fragment> 태그로 액티비티 화면에 프래그먼트를 출력
- <fragment> 태그의 name 속성에 프래그먼트 클래스를 지정
<fragment
android:name="com.example.test11.OneFragment"
android:id="@+id/fragmentView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
액티비티 코드에서 프래그먼트 출력 (방법2)
- 코드에서 프래그먼트를 동적으로 제어(추가, 제거 등)하려면 FragmentManager로 만든 FragmentTransaction 클래스의 함수 이용
- add(int containerViewId, Fragment fragment): 새로운 프래그먼트를 화면에 추가합니다.
- replace(int containerViewId, Fragment fragment): 추가된 프래그먼트를 대체합니다.
- remove(Fragment fragment): 추가된 프래그먼트를 제거합니다.
- commit(): 화면에 적용합니다.
activity_main.xml
<LinearLayout
android:id="@+id/fragment_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"/>
MainActivity onCreate()
val fragmentManager: FragmentManager = supportFragmentManager
val transaction: FragmentTransaction = fragmentManager.beginTransaction()
val fragment = OneFragment()
transaction.add(R.id.fragment_content,fragment)
transaction.commit()
백 스택은 프래그먼트가 화면에 보이지 않는 순간 제거하지 않고 저장했다가 다시 이용할 수 있는 기능을 말합니다.
백 스택을 사용하지 않으면 프래그먼트가 교체될 때 기존의 프래그먼트는 onDestroy까지 호출되어 제거됩니다.
백 스택을 사용하면 프래그먼트가 제거되지 않고 onDestroyView 함수까지만 호출됩니다
transaction.addToBackStack(null)
프래그먼트 생명주기
액티비티의 생명주기 함수인 onCreate(), onStart(), onResume(), onPause(), onStop(), onDestory()를 그대로 가지고 있으며 호출되는 시점도 액티비티와 같다.
초기화(initialized), 생성(created), 시작(started), 재개(resumed), 소멸(destroyed) 단계로 구분
'_Study > AndroidStudio' 카테고리의 다른 글
[카카오맵 API] 안드로이드 코틀린 현재 실제 위치를 마커표시하기 (2) | 2023.05.25 |
---|---|
[카카오맵 API] 안드로이드 코틀린 카카오맵 불러오기 초기세팅 (22.01.01 전기뱀장어 버젼) (3) | 2023.05.24 |
제트팩 라이브러리 안드로이드 스튜디오 appcompat 라이브러리 (0) | 2022.12.08 |
seekbar을 이용한 음악재생 #시크바 코틀린 (0) | 2022.12.07 |
소리와 진동 알림, 알림 띄우기 안드로이드 스튜디오 (1) | 2022.12.07 |