본문 바로가기
Android

BaseActivity, BaseFragment

by 나른한 사람 2021. 8. 13.
  • abstract class는 인스턴스화 될 수 없으며 반드시 상속되어야 함.
  • 반드시 구현해야 할 function을 정의할 수 있음
abstract class DefaultActivity<T: ViewDataBinding>(@LayoutRes val resId: Int): AppCompatActivity() {
    val binding: T by lazy { DataBindingUtil.setContentView(this, resId) }
    val viewModel by viewModel<MainViewModel>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)
    }
}
abstract class DefaultFragment<T: ViewDataBinding>(@LayoutRes val resId: Int): Fragment() {
    lateinit var binding: T
    val viewModel by viewModel<MainViewModel>()

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = DataBindingUtil.inflate(inflater, resId, container, false)
        return binding.root
    }
    fun applicationContext(): Context = requireActivity().applicationContext
}

'Android' 카테고리의 다른 글

MVVM 패턴  (0) 2021.08.08

댓글