반응형
Notice
Recent Posts
Recent Comments
Link
불로구
안드로이드 스튜디오 - Fragment & transaction & manager ( 실습편2 ) 본문
반응형
<Button
android:id="@+id/fragment_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="나와라"/>
<Button
android:id="@+id/fragment_button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="사라져"/>
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="vertical"
android:background="#ff33dd"/>
fragment_button.setOnClickListener {
val fragmentManager : FragmentManager = supportFragmentManager
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.container , fragmentOne)
fragmentTransaction.commit()
}
fragment_button2.setOnClickListener {
val fragmentManager = supportFragmentManager
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.remove(fragmentOne)
// fragmentTransaction.detach(fragmentOne)
fragmentTransaction.commit()
}
remove vs detach
-> remove는 해당 fragment가 존재할 경우 제거 한다
-> detach는 해당 fragment가 존재할 경우 떼어낸
-> remove의 경우 FragmentManager 안에서 완전히 제거
-> detach 의 경우 stack에 존재한다.
FragmentManager
-> FragmentManager는 동적으로 프래그먼트를 다루기 위해 꼭 필요한 요소이다.
-> 액티비티와 프래그먼트의 중간에서 서로를 이어주는 역할
Fragment Transaction
-> 어떤 대상에 대해 추가, 제거, 변경 등의 작업들이 발생하는 것, 주로 DB에서 많이 사용하는 언어이다.
-> 트랜잭션의 상태를 프래그먼트 백스택을 통해 저장 가능
FragmentManager fragmentManager = getSupportFragmentManager(); // 프래그먼트 매니저 선언
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // 트랜잭션 시작
fragmentTransaction.commit(); 커밋
-> 프래그먼트 매니저를 선언 후 beginTransaction()을 호출하여 작업을 시작한다
-> beginTransaction()과 commit() 사이에 작업을 지정한다.
-> commit()을 호출하여 트랜잭션을 끝낸다.
-> commit()을 호출하지 않으면 작업이 정상적으로 수행되지 않는다.
프래그먼트 백스택
- 현재 실행하려는 트랜잭션의 상태를 기억
-> ex) 앱을 뒤로가기 할 시 프래그먼트를 이전 상태로 되돌릴 수 있다.
...begin()
transaction.replace(R.id.fragment, fragment)
transaction.addToBackStack(data)
...commit()
반응형
Comments