Jetpack Compose | Compose를 이용하는 BaseFragment

·

Compose로 구성되는 Fragment의 BaseFragment 부모 클래스를 다음과 같이 작성할 수 있다.

abstract class ComposeBaseFragment<R : BaseViewModel> : Fragment() {
    abstract val viewModel: R

    @Composable
    abstract fun Compose()

    abstract fun afterCompose()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val compose = ComposeView(requireContext()).apply {
            setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
            setContent {
                MaterialTheme {
                    Compose()
                }
            }
        }
        afterCompose()
        return compose
    }
}

이 ComposeBaseFragment 를 상속해서 만든 Fragment 에서는

“Compose” Composable 함수 안에 Compose 코드들을 구성하고, afterCompose() 에서는 컴포즈 구성 이후 실행되어야 하는 다른 코드들을 작성할 수 있다.

필요에 따라 beforeCompose() 와 같은 함수를 만들어서 컴포즈 구성 이전에 실행되어야 하는 코드를 작성할 수도 있다.

In:

Tags:

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다