Android Studio/base_Project

[기본] 개인 정보 등록 앱 구현하기 (2/2)

내손은개발 🐾 2024. 2. 1. 18:01

1. 데이터 저장

1-1) 단순하게 데이터를 저장하려고 알아보다가 SharedPreferences로 저장하기로 한다.

 

SharedPreferences로 단순 데이터 저장하기  |  Android 개발자  |  Android Developers

DataStore는 로컬 데이터를 저장하는 최신 방법을 제공합니다. SharedPreferences 대신 DataStore를 사용해야 합니다. 자세한 내용은 DataStore 가이드를 참고하세요. SharedPreferences로 단순 데이터 저장하기 컬

developer.android.com

공식문서를 보면

 -  키-값이 비교적 적을 경우 SharedPreferences API를 사용할 수 있다고 한다. 

나머지는 공식문서를 통해 보고

EditActivity.kt

 

앞에 editer가 계속 쓰이기때문에 with를 사용한다.

1-2) bloodType

radioGroup과 spinner가 한번에 들어와야되서 따로 함수로 만들어 준다.

 

//EditActivity.kt

private fun getBloodType() {
        val bloodAlphabet = binding.bloodTypeSpinner.selectedItem.toString()
        val bloodSign = if(binding.bloodTypePlus.isChecked) "+" else "-"
    }
    
    //bloodAlphabet는 spinner에 선택된 아이템 가져오기
    //bloodSign는 selectedItem으로 선택된 아이템보단 bloodTypePlus이 체크되있다면 + 아니면 -

 

 

xml에 등록한 +와 -

결과코드

private fun saveData() {
        with(getSharedPreferences("userInformation", Context.MODE_PRIVATE).edit()) {
            putString("name", binding.nameEditText.text.toString())
            putString("bloodType", getBloodType())
            putString("emergencyContact", binding.emergencyContactEditText.text.toString())
            putString("birthDate", binding.birthdateTextView.text.toString())
            putString("hobby", getHobby())
            putString("mbti", binding.MBTITypeSpinner.selectedItem.toString()) //mbtiTextView
            apply()
        }
        Toast.makeText(this, "저장을 완료했습니다.", Toast.LENGTH_SHORT).show()
    }

    private fun getBloodType(): String {
        val bloodAlphabet = binding.bloodTypeSpinner.selectedItem.toString()
        val bloodSign = if(binding.bloodTypePlus.isChecked) "+" else "-"
        return "$bloodSign$bloodAlphabet"
    }

    private fun getHobby(): String{
        return if(binding.hobbyCheckBox.isChecked) binding.hobbyEditText.text.toString() else ""
    }

 

 

1-3) saveButton

 

 

 

2. 상수 값을 모아놓는 Const.kt 생성

코틀린 클래스를 새로 생성후 작성

//Const.kt
package com.example.kotlin_infomation_save

const val USER_INFORMATION = "userInformation"
const val NAME = "name"
const val BIRTYDATE = "birthdate"
const val BLOOD_TYPE = "bloodType"
const val EMERGENCY_CONTACT = "emergencyContact"
const val HOBBY = "hobby"
const val MBTI = "mbti"

 

해당되는 것들 변경해주기

//MainActivity
private fun saveData() {
        with(getSharedPreferences(USER_INFORMATION, Context.MODE_PRIVATE).edit()) {
            putString(NAME, binding.nameEditText.text.toString())
            putString(BLOOD_TYPE, getBloodType())
            putString(EMERGENCY_CONTACT, binding.emergencyContactEditText.text.toString())
            putString(BIRTYDATE, binding.birthdateTextView.text.toString())
            putString(HOBBY, getHobby())
            putString(MBTI, binding.MBTITypeSpinner.selectedItem.toString()) //mbtiTextView
            apply()
        }
        Toast.makeText(this, "저장을 완료했습니다.", Toast.LENGTH_SHORT).show()
    }

 

 

3. 데이터 저장할거 MainActivity로 옮겨주기

 

3-2) MainActivity 실행

MainActivity.kt

 

 

4. 데이터 삭제

//MainActivity.kt
	private fun deleteData() {
        with(getSharedPreferences(USER_INFORMATION, MODE_PRIVATE).edit()) {
            clear()
            apply()
            getDataUiUpdate()
        }
        Toast.makeText(this, "데이터를 삭제했습니다.", Toast.LENGTH_SHORT).show()
    }

 

//MainActivity.kt -> onCreate
	binding.deleteButton.setOnClickListener {
        deleteData()
   	}

 

 

 

5. 전화기능