상세 컨텐츠

본문 제목

[안드로이드 코틀린] ViewModel - 화면 회전 시 데이터 초기화 막는 방법

안드로이드

by aries574 2022. 6. 3. 12:03

본문


 이번 시간에는 이전 포스팅에 이어서 화면 전환 시 데이터가 초기화되는 현상을 막는 방법에 대하여 알아보겠습니다.

이전 포스팅은 아래 링크를 들어가시면 됩니다.

2022.06.02 - [안드로이드] - [안드로이드 코틀린] DataBinding 컴포넌트 쉽게 접근하는 방법

 

[안드로이드 코틀린] DataBinding 컴포넌트 쉽게 접근하는 방법

이번 시간에는 Databinding를 통해 레이아웃 컴포넌트에 쉽게 접근하는 방법을 코틀린으로 구현해보도록 하겠습니다. 목차 1. 실행 화면 2. dataBinding 설정 3. 메인 화면 구성 activity_main.xml 4. 메인 코

aries574.tistory.com


목차

1. 실행 화면
2. ViewModel 클래스 만들기 MainViewModel.kt
3. 메인 코드 수정 MainActivity.kt


1. 실행 화면


2. ViewModel 클래스 만들기 MainViewModel.kt

 - 설명 -

 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--
    }
}

 


3. 메인 코드 수정 MainActivity.kt

 - 설명 -

 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 - 화면 회전 시 데이터 초기화 막는 방법

 

[안드로이드] ViewModel - 화면 회전 시 데이터 초기화 막는 방법

 이번 시간에는 화면 전환 시 데이터가 초기화되는 현상을 막는 방법에 대하여 알아보겠습니다. 이전 포스팅에 이어서  진행하니 미리 보고 오시면 되겠습니다. 2022.05.10 - [안드로이드] - [안드

aries574.tistory.com

2022.04.19 - [안드로이드] - [안드로이드] 커스텀 달력 만드는 방법 part1 화면 구성

 

[안드로이드] 커스텀 달력 만드는 방법 part1 화면 구성

이번 시간부터 커스텀 달력을 만들어 보겠습니다. 이번에는 메인화면 구성을 해보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구성 activity_main.xml 1. 실행 화면 2. 메인 화면 구성 activity_main.xml  -.

aries574.tistory.com

2022.04.08 - [안드로이드] - [안드로이드] Tab Custom Animation part1 - 화면 구성

 

[안드로이드] Tab Custom Animation part1 - 화면 구성

이번 시간부터 TabLayout을 직접 만들어 애니메이션까지 넣어보는 방법을 알아보겠습니다. 이번 포스팅은 화면 구성을 해보겠습니다. 목차 1. 실행 화면 2. 테마 변경 3. 배경 색상 파일 만들기(drawab

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역