드레:
코딩 뿌시기
드레:
전체 방문자
오늘
어제
  • 분류 전체보기 (268)
    • Python (74)
      • Python 기초 (42)
      • Numpy (8)
      • Pandas (22)
    • Machine Learning (31)
      • Machine Learning (1)
      • Deep Learning (27)
    • AWS (22)
      • RDS (3)
      • EC2 (9)
      • Lambda (8)
      • S3 (2)
    • MySQL (24)
    • Git (8)
    • Streamlit (12)
    • REST API (22)
    • Java (24)
    • Android (36)
    • Debugging (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • EC2
  • Lambda
  • Java
  • 깃이그노어
  • API
  • serverless
  • Retrofit2
  • 네이버 API
  • aws s3
  • CNN
  • fine tuning
  • tensorflow
  • 액션바
  • Ann
  • pandas
  • Python
  • 안드로이드 스튜디오
  • volley
  • GET
  • JWT
  • 딥러닝
  • github
  • AWS Lambda
  • flask
  • 서버리스
  • AWS
  • Callback
  • rest api
  • Transfer Learning
  • Streamlit

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
드레:

코딩 뿌시기

Android

Android Studio - SharedPreferences 를 이용해 앱 내에 데이터 저장, 불러오기

2023. 1. 31. 11:53

데이터 저장

  • 데이터를 저장하려면 edit()를 호출하여 SharedPreferences.Editor를 생성
  • putString(), putInt() 와 같은 메서드를 사용하여 키와 밸류 전달
  • apply() 메서드를 호출하여 데이터 저장
// MyData는 이름으로 식별되는 SharedPreferences, MODE_PRIVATE으로 만든 경우 이 앱에서만 사용가능
SharedPreferences sp = getSharedPreferences("MyData", MODE_PRIVATE);
// 에디터 생성
SharedPreferences.Editor editor = sp.edit();
// 키와 밸류 전달
editor.putString("stringData", data); // String data = "Hello";
// 데이터 저장
editor.apply();

 

 

 

데이터 불러오기

  • getString(), getInt() 와 같은 메서드를 사용하여 데이터를 가져온다.
  • 첫번째 파라미터 : 키
  • 두번째 파라미터 : 키가 존재하지 않을 때 반환할 디폴트 값
// 저장된 MyData SharedPreferences 파일 호출
SharedPreferences sp = getSharedPreferences("MyData", MODE_PRIVATE);
// 저장된 데이터 불러오기, 키가 없을 경우 빈 문자열을 불러온다.
String savedData = sp.getString("stringData", "");

 

 

 

데이터 지우기

  • edit()를 호출하여 SharedPreferences.Editor를 생성
  • edit.clear() 메소드를 이용하여 지정한 환경설정 파일의 데이터 삭제
// 저장된 MyData SharedPreferences 파일 호출
SharedPreferences sp = getSharedPreferences("MyData", MODE_PRIVATE);
// 에디터 생성
SharedPreferences.Editor editor = sp.edit();
// MyData에 저장된 데이터 삭제
editor.clear();

 

 

 

샘플 코드

MainActivity.java 파일

import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    EditText editSentence;
    Button btnSave;

    // Shared Preference 저장소 이름
    private static final String SP_NAME = "save_app";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editSentence = findViewById(R.id.editSentence);
        btnSave = findViewById(R.id.btnSave);

        // 만약, 앱 저장소에 sentence라는 key로 저장된 데이터가 있으면,
        // 에디트텍스트에 표시를 하자
        SharedPreferences sp = getSharedPreferences(SP_NAME, MODE_PRIVATE);
        String sentence = sp.getString("sentence", "");
        int data = sp.getInt("hello", 0);
        editSentence.setText(sentence + data);

        // 유저가 입력한 문장을
        // Shared Preference에 저장한다.
        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String sentence = editSentence.getText().toString().trim();
                // 첫번째 파라미터는, 저장소 이름을 적어준다.
                // 두번째 파라미터 MODE_PRIVATE을 쓴 경우, 이 앱에서만 사용할 수 있도록 한다.
                SharedPreferences sp = getSharedPreferences(SP_NAME, MODE_PRIVATE);
                SharedPreferences.Editor editor = sp.edit();
                editor.putString("sentence", sentence);
                editor.putInt("hello", 100);
                editor.apply();

                editSentence.setText("");
            }
        });

    }
}

 

 

activity_main.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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editSentence"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="17dp"
        android:layout_marginTop="98dp"
        android:layout_marginEnd="17dp"
        android:layout_marginBottom="66dp"
        android:ems="10"
        android:hint="오늘의 문구"
        android:inputType="textPersonName"
        android:textSize="32sp"
        app:layout_constraintBottom_toTopOf="@+id/btnSave"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btnSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="157dp"
        android:layout_marginTop="63dp"
        android:layout_marginEnd="157dp"
        android:text="저장"
        android:textSize="32sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editSentence" />
</androidx.constraintlayout.widget.ConstraintLayout>

'Android' 카테고리의 다른 글

Android Studio - SQLite3 데이터베이스 활용하기  (0) 2023.01.31
Android Studio - 간단한 유효성 검사(이메일주소, 전화번호, 웹URL, IP주소)  (0) 2023.01.31
Android Studio - 액티비티 간의 화면 전환, 데이터 전달(단방향/양방향)  (0) 2023.01.30
Android Studio - Activity Life Cycle(액티비티 수명 주기)  (0) 2023.01.30
Android Studio - AlertDialog 사용법  (0) 2023.01.27
    'Android' 카테고리의 다른 글
    • Android Studio - SQLite3 데이터베이스 활용하기
    • Android Studio - 간단한 유효성 검사(이메일주소, 전화번호, 웹URL, IP주소)
    • Android Studio - 액티비티 간의 화면 전환, 데이터 전달(단방향/양방향)
    • Android Studio - Activity Life Cycle(액티비티 수명 주기)
    드레:
    드레:

    티스토리툴바