728x90
xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/etName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text"
android:text=""
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.503"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.241" />
<Button
android:id="@+id/btnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next>>"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.503"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.609" />
<EditText
android:id="@+id/etAge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.503"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.405" />
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.spdemo
// 필요한 안드로이드 프레임워크 및 라이브러리를 임포트합니다.
import android.content.SharedPreferences
import android.os.Bundle
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
// MainActivity 클래스 정의, AppCompatActivity를 상속받아 구현합니다.
class MainActivity : AppCompatActivity() {
// 사용자 인터페이스 요소를 위한 변수 선언
private lateinit var nameText: EditText // 이름을 입력받는 EditText
private lateinit var ageText: EditText // 나이를 입력받는 EditText
private lateinit var sf: SharedPreferences // SharedPreferences 객체
private lateinit var editor : SharedPreferences.Editor // SharedPreferences의 Editor 객체
// 액티비티가 생성될 때 호출되는 메소드
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) // 레이아웃 설정
// 레이아웃에서 EditText를 ID를 통해 찾아 변수에 할당합니다.
nameText = findViewById(R.id.etName)
ageText = findViewById(R.id.etAge)
// SharedPreferences 초기화 ("my_sf"라는 이름의 파일 사용)
sf = getSharedPreferences("my_sf", MODE_PRIVATE)
editor = sf.edit() // Editor 객체 초기화
}
// 액티비티가 일시정지 상태가 될 때 호출되는 메소드
override fun onPause() {
super.onPause()
// EditText에서 텍스트를 가져와 String으로 변환
val name = nameText.text.toString()
val age = ageText.text.toString().toInt() // String을 Int로 변환
// Editor를 사용하여 SharedPreferences에 데이터 저장
editor.apply {
putString("sf_name", name) // 이름 저장
putInt("sf_age", age) // 나이 저장
commit() // 변경사항을 실제 파일에 반영
}
}
// 액티비티가 다시 활성화될 때 호출되는 메소드
override fun onResume() {
super.onResume()
// SharedPreferences에서 데이터 불러오기
val name = sf.getString("sf_name", null) // 이름 불러오기, 기본값은 null
val age = sf.getInt("sf_age", 0) // 나이 불러오기, 기본값은 0
// 불러온 데이터를 EditText에 설정
nameText.setText(name)
if (age != 0) { // 나이가 0이 아닌 경우에만 표시
ageText.setText(age.toString())
}
}
}728x90
'SW Expert Academy > SWEA D3' 카테고리의 다른 글
| [SW Expert Academy] 최장 증가 부분 수열 (D3) (0) | 2024.09.29 |
|---|---|
| [SW Expert Academy] 부분 수열의 합 (D3) (0) | 2024.09.29 |
| [SW Expert Academy] 기차 사이의 파리 (D3) (1) | 2024.09.28 |
| [SW Expert Academy] 주혁이의 복권 당첨 (D3) (0) | 2024.09.28 |
| [SW Expert Academy] 구구단 걷기 (D3) (0) | 2024.09.28 |