땀이 삐질삐질 나는 개발 일기

BaseActivity 만들기 with DataBinding,ViewModel (Kotlin) 본문

개발 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()
    }
}
 
초급 안드로이드 개발자를 위한 카카오톡 오픈 채팅방을 운영 중 입니다. 
(저는 마냥 친절한 방장은 아닙니다.  다만, 다 같이 성장하고 싶은 방장이며 개발자 입니다)

 

Comments