프래그먼트는 액티비티 내에서 UI의 일부분을 나타내는 요소다.
액티비티를 바꿔가며 화면을 전환할 수 있지만, 프래그먼트를 사용하여 화면 전환을 하게 되면 자원을 덜 사용하며 조금은 더 빠른 속도를 경험할 수 있다.
안드로이드 가이드에서 액티비티는 앱 UI의 탐색 네비게이션과 같은 전역적인 요소를 사용하고, 탐색 내비게이션 선택에 따라 컨텐츠가 보이는 부분은 프래그먼트로 사용할 것을 권장한다.
구현 방법은 프래그먼트를 적용할 액티비티에 frameLayout을 만들고,
framelayout에 프래그먼트를 넣어서 전환하는 방식으로 한다.
//FirstActivity.kt
class FirstActivity : AppCompatActivity() {
private lateinit var viewBinding:ActivityFirstBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewBinding = ActivityFirstBinding.inflate(layoutInflater)
setContentView(viewBinding.root)
//FRAGMENT MANAGER
supportFragmentManager
.beginTransaction()
.replace(viewBinding.frameLayout.id, FirstFragment())
.commitAllowingStateLoss()
viewBinding.button1.setOnClickListener {
supportFragmentManager
.beginTransaction()
.replace(viewBinding.frameLayout.id, FirstFragment())
.commitAllowingStateLoss()
}
viewBinding.button2.setOnClickListener {
supportFragmentManager
.beginTransaction()
.replace(viewBinding.frameLayout.id, SecondFragment())
.commitAllowingStateLoss()
}
}
//FirstFragment.kt
class FirstFragment : Fragment() {
lateinit var viewbinding: FragmentFirstBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewbinding = FragmentFirstBinding.inflate(layoutInflater)
return viewbinding.root
}
}