- 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
}
댓글