Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 0xC00000FD
- Kotlin
- cyclic imports
- 안드로이드 스튜디오
- 1073741571
- 딕셔너리 복사
- Java
- setVisibility
- 이미지크기
- python #circular imports #
- 파이썬 문법
- View.GONE
- 뷰크기
- 코틀린
- 자바
- 버튼크기
Archives
- Today
- Total
개발여행
Kotlin 이전 프래그먼트로 돌아가기 & 뒤로가기 두번 눌러서 앱종료하기 본문
메인 엑티비티에 다음과 같이 setFrag()함수를 작성하고 onBackPressed 함수를 override한다.
fun setFrag(fragment: Fragment) {
val fm = supportFragmentManager
val transaction = fm.beginTransaction()
transaction.add(R.id.main_frame, fragment).addToBackStack(null)
transaction.commit()
override fun onBackPressed() {
val fm = supportFragmentManager
val count = fm.backStackEntryCount
if (count > 0)
super.onBackPressed()
else {
if(System.currentTimeMillis() - mBackWait >= 2000) {
mBackWait = System.currentTimeMillis()
Toast.makeText(this, "뒤로가기 버튼을 한번 더 누르면 앱이 종료됩니다.", Toast.LENGTH_SHORT).show()
} else {
finish()
}
}
}
프래그먼트를 전환할때 replace를 사용하여도 되지만 추후에 애니메이션을 사용하게 될 경우 add로 처리하는게 더 깔끔하여 add를 사용한다.
그리고 addToBackStack() 함수를 이용해 현재 프래그먼트를 백스택에 추가한다.
기존의 onBackPressed() 함수에서는 백스택에 프래그먼트가 존재한다면 직전의 프래그먼트로 뷰를 교체한다.
if로 분기를 하나 추가하여 백스택에 프래그먼트가 없다면 종료의사를 물어본 뒤에 어플리케이션을 종료하도록 한다.
여기까지만 해도 휴대폰의 뒤로가기 버튼만으로 기능이 구현되지만 다음과 같이 프래그먼트를 전환할때처럼 어플리케이션 내에 버튼을 만들어서 기능을 구현할 수도 있다.
class FragmentA :Fragment() {
/* 생략 */
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
/* 생략 */
binding.btnPrevious.setOnClickListener { onBackPressed() }
return binding.root
}
fun onBackPressed() {
val mactivity = activity as MainActivity
mActivity.onBackPressed()
}
'Mobile > Kotlin' 카테고리의 다른 글
리사이클러 뷰 사용시 내용이 잘리는 문제 해결 (0) | 2022.06.18 |
---|---|
Kotlin, JAVA 리사이클러 뷰 아이템 숨기기시에 공간이 그대로 남아 있는 현상 (0) | 2022.06.06 |
Kotlin 프래그먼트 전환 애니메이션 효과 (0) | 2022.05.15 |
Kotlin 프래그먼트 전환시 데이터 전달 (0) | 2022.05.15 |
Kotlin 프래그먼트 전환 (0) | 2022.05.15 |