참고 한 Medium 글
1. Fragment 에서 OnBackPressed 관리
class MyFragment : Fragment() {
override fun onAttach(context: Context) {
super.onAttach(context)
val callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// Do something
}
}
requireActivity().onBackPressedDispatcher.addCallback(this, callback)
}
}
여기서 당연하게 Activity 로 BackPressed 를 연결 시키려면 BackPressed 추가하면 된다
requireActivity().onBackPressed()
더이상(이미 다들 알고 있겠지만...) 추상화 메서드 만들어서 BackPressed 를 연결하지 않아도 된다.
2. FragmentTransaction 처리
// Before
supportFragmentManager
.beginTransaction()
.add(R.id.container, MyFragment::class.java, null)
.commit()
// After
supportFragmentManager.commit {
replace<MyFragment>(R.id.container)
}
하단(After)의 FragmnetManager 의 commit 함수를 보면 아래와 같이 구현되어 있다.
public inline fun FragmentManager.commit(
allowStateLoss: Boolean = false,
body: FragmentTransaction.() -> Unit
) {
val transaction = beginTransaction()
transaction.body()
if (allowStateLoss) {
transaction.commitAllowingStateLoss()
} else {
transaction.commit()
}
}
commit() 호출할때 allowStateLoss 에 true 를 주면 commitAllowingStateLoss() 로 진행한다.
개인적으로 편하다고 생각한 2가지만 가져왔고 나머지 기능들도 의미가 있는것 같다.
나머지는 미디엄 링크를 참고!!
반응형
'Dev > Android' 카테고리의 다른 글
Android Gradle 빌드파일 - build.gradle.kts 참고 (0) | 2021.07.13 |
---|---|
[UI/UX] 서비스마다 제각각인 비밀번호 텍스트 창 (0) | 2021.07.06 |
XML 에서 뷰모델을 활용해서 텍스트 변경, ViewModel Pattern (0) | 2021.05.18 |
Android 진동 Vibrate (0) | 2021.04.15 |
DataBindingUtil 오류 - <layout> 처리 (0) | 2021.04.08 |