본문 바로가기
📁App Developing/Kotlin 강좌

Bmi 앱 메모

by Hush 2022. 7. 24.

이전 화면으로 돌아가는 업 네비게이션

startActivity를 활용하여 새로운 액티비티를 띄웠을 때 뒤로가기 버튼을 활용하여 이전 액티비티로 돌아갈 수는 있다.

하지만 사용자가 이전 화면으로 돌아갈 수 있다는 것을 알아챌 수 있는 단서는 화면 어디에도 없다.

업 네비게이션을 만들면 상단에 이전 화면으로 돌아가기 위한 화살표를 만들 수 있다.

프로젝트의 manifest 폴더 내의 xml파일을 열자.

프로젝트에 생성된 모든 액티비티가 액티비티 태그로 만들어져 있을 것이다.

여기서 뒤로가기 버튼을 표시할 액티비티를, 뒤로갔을때 보일 액티비티의 자식으로 설정해주면 된다.

<activity
    android:name=".ResultActivity"
    android:exported="false"
    android:parentActivityName=".MainActivity"/>

예시 코드에서는 ResultActivity의 부모 Activity로 MainActivity를 설정해 주었다.

이렇게 간단하게 액티비티간의 상하관계를 정해줄 수 있다.

 

인텐트에 데이터 담기

인텐트에 대이터를 담아 전달하고 싶다면 인텐트 변수의 putExtra 메서드를 사용하면 된다.

val intent = Intent(this, ResultActivity::class.java)
intent.putExtra("weight", weightEditText.text.toString())
intent.putExtra("height", heightEditText.text.toString())
startActivity(intent)

putExtra(전달할 데이터의 이름,  데이터) 의 형식으로 전달해주면 된다.

데이터를 꺼낼 때에는

인텐트변수.get자료형Extra(전달받을데이터이름)

의 방식으로 데이터를 꺼낼 수 있다.

예제에서 사용한 코드는 다음과 같다.

val height = intent.getStringExtra("height")?.toInt()
val weight = intent.getStringExtra("weight")?.toInt()

 

데이터를 저장하고 꺼내기

앱이 종료되어도 데이터가 저장되어 보관되도록 하는 방법을 알아보자.

Bmi앱의 MainActivity.kt 에 메서드로 만든 데이터 저장 코드는 다음과 같다.

private fun saveData(height: Int, weight: Int){
    val pref = PreferenceManager.getDefaultSharedPreferences(this)
    val editor = pref.edit()

    editor.putInt("KEY_HEIGHT", height)
        .putInt("KEY_WEIGHT", weight)
        .apply()
}

preference 객체를 받아 저장하고, 그 객체의 edit 메서드를 변수(editor)에 저장한다.

editor 의 putInt 메서드에 데이터 이름과 데이터값을 전달하여 저장하고 apply 메서드로 저장해주면 데이터가 저장된다.

 

다음으로 데이터를 불러오는 메서드를 살펴보자.

private fun loadData() {
    val pref = PreferenceManager.getDefaultSharedPreferences(this)
    val height = pref.getInt("KEY_HEIGHT", 0)
    val weight = pref.getInt("KEY_WEIGHT", 0)

    if (height != 0 && weight != 0) {
        heightEditText.setText(height.toString())
        weightEditText.setText(weight.toString())
    }
}

동일하게 preference 객체를 받아 저장한 다음, 객체의 get자료형 메서드를 통해 저장된 값을 받아온다.

불러올 데이터 이름과 함께 전달되는 인수는 저장된 데이터가 없을 경우 가져올 default 값이다.

이후 적절한 값들을 return할 수도 있고, 예시 코드처럼 바로 활용할 수도 있다.

'📁App Developing > Kotlin 강좌' 카테고리의 다른 글

레이아웃  (0) 2022.08.27
스탑워치 메모  (0) 2022.07.25
kotlin 기초 문법  (0) 2022.07.23
kt 파일에서 xml 파일의 요소에 접근하기  (0) 2022.07.23
명언 앱 만들기  (0) 2022.07.22

댓글