[Android] Fragment

제철맞은생선·2022년 12월 29일
0

ANDROID

목록 보기
5/12
post-thumbnail

프래그먼트는 액티비티 내에서 UI의 일부분을 나타내는 요소다.

액티비티를 바꿔가며 화면을 전환할 수 있지만, 프래그먼트를 사용하여 화면 전환을 하게 되면 자원을 덜 사용하며 조금은 더 빠른 속도를 경험할 수 있다.

안드로이드 가이드에서 액티비티는 앱 UI의 탐색 네비게이션과 같은 전역적인 요소를 사용하고, 탐색 내비게이션 선택에 따라 컨텐츠가 보이는 부분은 프래그먼트로 사용할 것을 권장한다.

구현 방법은 프래그먼트를 적용할 액티비티에 frameLayout을 만들고,
framelayout에 프래그먼트를 넣어서 전환하는 방식으로 한다.


Activity

//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()
        }
}
  • 버튼을 눌러 프래그먼트를 고르도록 하는 코드다.
  • supportFragmentManager를 이용하여 원하는 프래그먼트를 띄울 수 있다.
  • beginTransaction()은 FragmentTransaction 객체를 반환하는 함수다.
  • replace를 통해 액티비티의 framelayout에 원하는 프래그먼트를 집어넣는다.

Fragment (기본 형식)

//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
    }
}

0개의 댓글