개발 Tip
BaseActivity 만들기 with DataBinding,ViewModel (Kotlin)
삐질
2020. 1. 6. 20:34
안녕하세요 개발자 삐질입니다.
이번 글에서는 DataBinding을 사용하여 BaseActivity를 손쉽게 재사용 하는 방법에 대해 알아보겠습니다.
1. BaseActicity
- layout Res와 Generic 타입을 정의해서 Child Activity를 깔끔하게 관리하기
abstract class BaseActivity<T : ViewDataBinding>(private val layoutId:Int): AppCompatActivity(){
lateinit var compositable: CompositeDisposable
lateinit var binding: T
lateinit var lExcaptionMsg : Observer<Int>
lateinit var lMsg: Observer<String>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
compositable = CompositeDisposable()
binding = DataBindingUtil.inflate(layoutInflater,layoutId,null,false)
setContentView(binding.root)
binding.lifecycleOwner=this
}
abstract fun setObserver()
override fun onDestroy() {
super.onDestroy()
compositable.clear()
}
}
2. 상속받을 Activity
class MainActivity : BaseActivity<ActivityMainBinding>(R.layout.activity_main) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
init()
}
fun init(){
setFragment(TipFragment.newInstance())
}
override fun setObserver() {
}
fun setFragment(fragment: Fragment){
var fragmentManager = supportFragmentManager
var tr = fragmentManager.beginTransaction()
tr.replace(binding.container.id,fragment,fragment.javaClass.simpleName)
tr.commit()
}
}
초급 안드로이드 개발자를 위한 카카오톡 오픈 채팅방을 운영 중 입니다.
(저는 마냥 친절한 방장은 아닙니다. 다만, 다 같이 성장하고 싶은 방장이며 개발자 입니다)