이번 시간에는 이전 포스팅에 이어서 화면 전환 시 데이터가 초기화되는 현상을 막는 방법에 대하여 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.06.02 - [안드로이드] - [안드로이드 코틀린] DataBinding 컴포넌트 쉽게 접근하는 방법
- 설명 -
1. 메인코드에서 사용할 score변수
2. score값 증가시킬 scorePlus()
3. score값 감소시킬 scoreMinus()
4. 객체 생성 시 실행되는 init {}
5. viewModel 종료 시 실행되는 onCleared()
class MainViewModel: ViewModel() {
var score: Int = 0
//객체 생성시 실행됨
init {
Log.d("MainViewModel", "MainViewModel 생성")
}
override fun onCleared() {
super.onCleared()
Log.d("MainViewModel", "MainViewModel 종료")
}
public fun scorePlus(){
score++
}
public fun scoreMinus(){
score--
}
}
- 설명 -
1. 기존에 있던 score 변수 삭제, MainViewModel에서 score 값 가져옴
2. scorePlus 함수에 MainViewModel에 있는 scorePlus함수 호출
3. scoreMinus 함수에 MainViewModel에 있는 scoreMinus함수 호출
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var mainViewModel: MainViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//binding 초기화
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
//뷰모델 초기화
mainViewModel = ViewModelProvider(this).get(MainViewModel::class.java)
//뷰모델에서 score 값 가져옴
binding.scoreText.text = mainViewModel.score.toString()
//마이너스 버튼
binding.minusBtn.setOnClickListener {
mainViewModel.scoreMinus()
binding.scoreText.text = mainViewModel.score.toString()
}
//플러스 버튼
binding.plusBtn.setOnClickListener {
mainViewModel.scorePlus()
binding.scoreText.text = mainViewModel.score.toString()
}
}
}
2022.05.11 - [안드로이드] - [안드로이드] ViewModel - 화면 회전 시 데이터 초기화 막는 방법
2022.04.19 - [안드로이드] - [안드로이드] 커스텀 달력 만드는 방법 part1 화면 구성
2022.04.08 - [안드로이드] - [안드로이드] Tab Custom Animation part1 - 화면 구성
[안드로이드 코틀린] LiveData 만드는 방법 part2 - 레이아웃에 ViewModel 직접 적용 (0) | 2022.06.05 |
---|---|
[안드로이드 코틀린] LiveData 만드는 방법 part1 - 실시간 데이터 변경 (0) | 2022.06.04 |
[안드로이드 코틀린] DataBinding 컴포넌트 쉽게 접근하는 방법 (0) | 2022.06.02 |
[안드로이드 코틀린] 간단한 RecyclerView 만드는 방법 part2 - adapter & MainActivity (0) | 2022.06.01 |
[안드로이드 코틀린] 간단한 RecyclerView 만드는 방법 part1 - 데이터 & 화면 (0) | 2022.05.31 |
댓글 영역