CS/Android, Kotlin
[Android] Base Activity, Fragment
dongdong216
2023. 4. 16. 03:05
백업용도로 작성
import android.os.Bundle
import androidx.annotation.LayoutRes
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.lifecycle.ViewModel
abstract class BaseActivity<VD: ViewDataBinding>(@LayoutRes val layoutRes: Int) : AppCompatActivity() {
/*@LayoutRes
abstract fun getLayoutRes(): Int*/
abstract val viewModel: ViewModel
val binding by lazy {
DataBindingUtil.setContentView(this, layoutRes) as VD
}
/*val itemDao by lazy {
AppDatabase.getDatabase(this).itemDao()
}*/
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding
initViewModel(viewModel)
onCreateAction()
}
abstract fun initViewModel(viewModel: ViewModel)
abstract fun onCreateAction()
}
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModel
abstract class BaseFragment<T: ViewDataBinding>(@LayoutRes val layoutRes: Int)
: Fragment() {
lateinit var binding: T
abstract val viewModel: ViewModel
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater, layoutRes, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
binding.lifecycleOwner = this@BaseFragment
initView()
super.onViewCreated(view, savedInstanceState)
}
abstract fun initView()
}