액티비티 위에서 동작하는 모듈화된 사용자 인터페이스로 activity로 분리되어 독립적으로 동작이 불가능하지만, 여러 개의 fragment를 하나의 activity에 조합해 창이 여러 개인 UI를 구축할 수 있고 하나의 fragment를 여러 activity에서 재사용이 가능하다.
fragment는 일부만을 바꾸는 것이 속도가 빨라 자주 사용된다.
참고로, fragment에 대해 레이아웃을 제공하려면 필수로 onCreateView() 콜백 메서드를 구현할 것
Activity는 시스템의 activity manager에서 intent를 해석해 actvity 간의 데이터를 전달하지만, Fragment는 activity의 fragment manager에서 method로 fragment 간의 데이터를 전달한다.
fragment를 activity의 레이아웃 파일에 정적으로 추가하는 방법이다.
fragment 안의 android:name 특성은 레이아웃 안에서 인스턴스화할 Fragment클래스를 지정해 주면 된다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
// 여기부분
<fragment
android:name="com.skmns.fragmentbasic.FirstFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment" />
</LinearLayout>
동적으로 fragment를 추가해 보자.
supportFragmentManager.commit {
replace(R.id.frameLayout, frag)
setReorderingAllowed(true)
addToBackStack("")
}
supportFragmentManager : 상호작용에 따라 Fragment를 축하거나 삭제하는 등 작업을 할 수 있게 해주는 매니저
replace : 어느 프레임에 레이아웃을 띄울 건지 결정 (fragment 고르기)
setReorderingAllowed : 애니메이션 전환이 바륵 작동하도록 transaction(전환)과 관련된 fragment의 상태 변경 최적화
addToBackStack : 뒤로 가기 버튼 클릭 시 다음 action 실행
사용자에게 결정 및 추가 정보를 입려가라는 메세지를 표시하는 작은 창으로 화면을 가득 채우지 않아 사용자가 조치를 취해야 하는 모달 이벤트에 사용된다.
여러 가지 대화 상자 디자인 빌드 가능, 이것만 있어도 되는 경우가 대부분으로 제목, 콘텐츠 영역, 작업버튼 존재
이렇게 하면 이런식으로 다이얼로그가 뜬다.
커스텀 방식과 비슷한 또 다른 방법이 있다.
우리 핸드폰에 자주 오늘 앱과 관련된 정보를 보여주는 기능이다.
(1) NotificationCompat.Builder : 객체에서 알림에 대한 UI 정보와 작업을 지정
- setSmallIcon() : 작은 아이콘
- setContentTitle() : 제목
- setContentText() : 세부 텍스트
(2) NotificationComapt.Builder.build( ) 호출로 Notification 객체 반환
(3) NotificationManager.Comapt.notify( ) 호출로 시스템에 Notification 객체 전달
- IMPORTANCE_HIGH : 긴급 (알림음 울림, 헤드업 알림 표시)
- IMPORTANCE_DEFAULT : 높음 (알림음 울림)
- IMPORTANCE_LOW : 중간 (알림음 울림)
- IMPORTANCE_MIN : 낮음 (알림음 없음, 상태표시줄 표시 없음)
긴 텍스트인 경우, 긴 텍스트를 추가한 확장 뷰에 넣을 수 있다.
텍스트뿐만 아니라, 이미지도 추가할 수 있다.
👉 다음에는 안드로이드 숙련에서 개념확인을 위해 다시 한번 정리하면서 점검해보자 !
fragment에서 onCreateView() 콜백 메서드를 써야된다고 말씀하셨는데 activity와 비슷하게 oncreate만 써도 되지 않나요?