반응형
<최종 화면>
값을 입력하고 Set 버튼을 누르면 SharedPreferences에 저장을 한다.
Get 버튼을 누르면 저장했던 값을 불러와서 TextView에 표시한다.
데이터를 저장하기 위해선 3가지 방법이 있다.
SharedPreferences / File / DB
속도 측면 : SharedPreferences > DB> File
SharedPreference는 속도도 빠르기 때문에 간단한 저장을 할 경우에 많이 사용한다.
(DB는 다소 까다롭고 복잡하다.)
보통 자동 로그인 여부를 판별하기 위한 체크용도, 토큰 값 저장 등에 쓰이는 것 같다.
저장 경로: data/data/패키지명/shared_prefs/SharedPreference명.xml <=에 저장 된다.
저장 형태: Key, Value로 저장된다.
인스턴스 방법 2가지
1. getPreferences(int mode) - 해당 액티비티에서만 사용 가능
2. getSharedPreferences(String name, int mode) - 다른 액티비티에서 사용 가능
환경 설정 파일 'name'의 컨텐츠를 검색하고 보유하여 값을 검색하고 수정할 수있는 SharedPreferences를 리턴하십시오.
(getSharedPreferences를 주로 많이 사용한다.)
자세한 사항은 아래 android developer사이트의 문서를 확인해보자.
우선 xml을 작성하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
<?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/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="Set SharedPreferences"
android:onClick="clickSetBt"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.715" />
<Button
android:layout_width="300dp"
android:layout_height="wrap_content"
android:onClick="clickGetBt"
android:text="Get SharedPreferences"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.495"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.821" />
|
이제 MainActivity.java를 작성하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package com.example.ex_sharedpreferences;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText editText;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=findViewById(R.id.editText);
textView=findViewById(R.id.textView);
}// onCreate()..
public void clickSetBt(View view) { // Set버튼 클릭 시 SharedPreferences에 값 저장.
if(editText.getText().toString().isEmpty()){ // 공백 또는 size=0이면
Toast.makeText(this, "값을 입력해주세요.", Toast.LENGTH_SHORT).show();
}
else {
SharedPreferences sharedPreferences= getSharedPreferences("test", MODE_PRIVATE); // test 이름의 기본모드 설정
editor.putString("inputText",editText.getText().toString()); // key,value 형식으로 저장
editor.commit(); //최종 커밋. 커밋을 해야 저장이 된다.
Toast.makeText(this, "저장되었습니다.", Toast.LENGTH_SHORT).show();
}
}// clickSetBt()..
public void clickGetBt(View view) { // Get버튼 클릭 시 SharedPreferences에 값 불러오기.
SharedPreferences sharedPreferences= getSharedPreferences("test", MODE_PRIVATE); // test 이름의 기본모드 설정, 만약 test key값이 있다면 해당 값을 불러옴.
String inputText = sharedPreferences.getString("inputText","");
textView.setText(inputText); // TextView에 SharedPreferences에 저장되어있던 값 찍기.
Toast.makeText(this, "불러오기 하였습니다..", Toast.LENGTH_SHORT).show();
}// clickGetBt()..
}// MainActivity class..
|
<실행 화면>
반응형
'안드로이드 > 개발자 일상' 카테고리의 다른 글
안드로이드 앱 권한 요청 라이브러리 AutoPermissions (2) | 2020.03.17 |
---|---|
안드로이드 다른 모양 버튼(custom button) 만들기 (0) | 2020.03.15 |
안드로이드 xmlns:tools , tools: (0) | 2020.03.12 |
코드 작성 시 다양한 표기 방법 (카멜, 파스칼, 헝가리안, 스네이크) (1) | 2020.03.11 |
라이브러리 최신 버전 찾기 팁 (0) | 2020.03.09 |
댓글