이 게시물은 다음 링크를 참조하여 학습했습니다.
[코틀린] Base 코드 관련 정리 (feat. BaseActivity, BaseFragment)
[2021-04-13 업데이트] BaseActivity 같은 것을 만들고 이것을 액티비티에서 상속받아 쓰면 여러모로 편리한 점이 많다. (중복 코드 제거 및 깔끔해짐 등등 ) 이것에 대해 기록용 포스팅을 남깁니다. Base
youngest-programming.tistory.com
[Android] BaseActivity를 이용한 Activity구현
BaseActivity란 여러 Activity를 사용할 때 중복되는 코드를 미리 정의하여 필요한 코드만 구현하도록 사용하는 기본 액티비티입니다.말로만 설명하면 이해하기 힘드니까 코드로 살펴보면위의 코드
velog.io
[디자인패턴] MVVM 패턴 (BaseActivity, BaseViewModel 사용하기)
BaseActivity 개발을 하다보면 모든 Activity에서 공통적으로 만들어줘야하는 변수들이 있다 이 변수들을 파일마다 만들어주는 번거로운 과정을 생략하기 위해서 Base 패키지에 필수적인 내용이 들어
jinee0717.tistory.com
이번 게시물에서는 BaseActivity, BaseFragment, BaseViewModel에 대해 작성하려 한다.
이번 게시물은 기록용인 점을 감안해주면 좋을것 같다.
기존에 Activity, Fragment, ViewModel 에서 중복되는 코드의 양을 줄이기 위해 Base Code를 작성한다.
Base Code들은 override를 강제해야될 필요성이 있기 때문에 abstract class로 구현했다.
Base Code들은 업데이트 되는대로 게시물을 수정하려 한다.
BaseActivity.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package com.example.wgpgkt.base
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
abstract class BaseActivity<T: ViewDataBinding> : AppCompatActivity() {
lateinit var binding: T
abstract val layoutResID: Int
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, layoutResID)
binding.lifecycleOwner = this
}
open fun btnClick(){}
protected fun makeToast(str:String) {
Toast.makeText(this, str, Toast.LENGTH_SHORT).show()
}
}
|
cs |
BaseFragment.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package com.example.wgpgkt.base
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.databinding.ViewDataBinding
abstract class BaseFragment<T: ViewDataBinding> :Fragment(){
lateinit var binding: T
abstract val layoutResID: Int
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?,
): View? {
binding = DataBindingUtil.inflate(inflater, layoutResID, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.lifecycleOwner = this
initView()
}
abstract fun initView()
}
|
cs |
BaseViewModel.kt
1
2
3
4
5
6
7
|
package com.example.wgpgkt.base
import androidx.lifecycle.ViewModel
abstract class BaseViewModel : ViewModel() {
}
|
cs |
'Legacy' 카테고리의 다른 글
[안드로이드 스튜디오 정리#17] Retrofit Errorbody, Status code, HttpLoggingIntercepter, Header (0) | 2022.02.13 |
---|---|
[안드로이드 스튜디오 독학#50] Navigation (0) | 2022.02.08 |
[안드로이드 스튜디오 정리#16] Coroutine (0) | 2022.02.04 |
[안드로이드 스튜디오 독학#48] Retrofit + ViewModel + Coroutine (0) | 2022.02.03 |
[안드로이드 스튜디오 독학#47] RecyclerView + ViewModel + DataBinding (0) | 2022.01.25 |