๋ฐฑ์ ์ฉ๋๋ก ์์ฑ
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()
}
'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 |