백업용도로 작성
import android.os.Bundleimport androidx.annotation.LayoutResimport androidx.appcompat.app.AppCompatActivityimport androidx.databinding.DataBindingUtilimport androidx.databinding.ViewDataBindingimport androidx.lifecycle.ViewModelabstract 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.Bundleimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport androidx.annotation.LayoutResimport androidx.databinding.DataBindingUtilimport androidx.databinding.ViewDataBindingimport androidx.fragment.app.Fragmentimport androidx.lifecycle.ViewModelabstract 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()}
'CS > Android, Kotlin' 카테고리의 다른 글
[Android] BottomNavigationView Custom (1) | 2023.12.03 |
---|---|
[Android] Hilt (0) | 2023.05.09 |
[Android] OKHttp3를 사용한 헤더 추가, Retrofit2를 사용한 http 통신 (0) | 2023.04.16 |
[Android] Custom View (0) | 2023.04.15 |
[Android] Data Binding (0) | 2023.04.15 |