마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

프래그먼트에서 프래그먼트로 이동

0 추천
안드로이드 스튜디오 생초보라 질문합니다!! 기존 프래그먼트에서 버튼을 만들어서 다른 프래그먼트로 이동하고 싶은데 잘 안 되네요... 코드 좀 알려주실 수 있나요??
참고로 언어는 코틀린입니다!!
dam (120 포인트) 님이 2022년 12월 1일 질문

1개의 답변

0 추천

프레그먼트간의 이동은 FragmentManager를 통해서 하셔야 합니다.

https://developer.android.com/guide/fragments/fragmentmanager

위의 개발자 문서 링크를 꼼꼼히 읽어 보시기를 추천드리구요.

Fragment도 액티비티처럼 스택개념을 사용하여 관리를 합니다. 즉 A프레그먼트에서 B프레그먼트로 이동한다면,

B
--
A

이런 식으로 스택을 관리하는 겁니다. 다만 프레그먼트 자체를 스택에 쌓지않고  스택의 동작/스텝(?)에 해당하는 transaction이라는 걸 대신 보관합니다. 데이터베이스 트랜잭션과 개념적으로는 비슷한 것으로 보시면 됩니다.

샘플 코드를 보시면 (동작원리는 자바코드를 보는게 더 이해하기가 쉽습니다.)
 

supportFragmentManager.beginTransaction()
  .replace(R.id.fragment_container, ExampleFragment.class, null)
  // setReorderingAllowed(true) and the optional string argument for
  // addToBackStack() are both required if you want to use saveBackStack().
  .setReorderingAllowed(true)
  .addToBackStack("replacement")
  .commit();

샘플에서 보시면 beginTransaction이라는 메소드를 호출합니다. 프레그먼트 스택에 쌓을 transaction을 정의하는 메소드입니다. commit이 호출되기 전까지의 동작이 스택에 저장이 되는 겁니다.

그리고

add/replace
setReorderingAllowed
addTobackstack

메소드의 조합에 따라 스택이 달라지게 됩니다.

사실 프레그먼트의 스택관리가 안드로이드 개발 중에서 제일 복잡하고 곺치아픈 것 중의 하나입니다. 공부를 엄청 많이 해도 마스터 하기가 좀 처럼 쉽자않은 주제입니다. 따라서 불확실게 있다면, 필요할 때 마다 개발자 문서를 찾아서 확인하는 것이 제일 좋다고 생각됩니다.

spark (226,420 포인트) 님이 2022년 12월 1일 답변
...