유튜브 채널 hongdroid홍드로이드님의 강의를 보고 학습했습니다.
xml 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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/et_save"
android:layout_width="100dp"
android:layout_height="wrap_content"
/>
</LinearLayout>
|
cs |
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
|
package com.example.sharedexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private EditText et_save;
String shared = "file";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_save = (EditText)findViewById(R.id.et_save);
SharedPreferences sharedPreferences = getSharedPreferences(shared, 0);
String value = sharedPreferences.getString("str","");
et_save.setText(value);
}
@Override
protected void onDestroy() {
super.onDestroy();
SharedPreferences sharedPreferences = getSharedPreferences(shared,0);
SharedPreferences.Editor editor = sharedPreferences.edit();
String value = et_save.getText().toString();
editor.putString("str",value);
editor.commit();
}
}
|
cs |
이번 시간에는 SharedPreferences를 학습했다.
SharedPreferences를 사용하면 앱을 재실행했을 때, 앱이 종료되기 전의 데이터를 사용할 수 있다.
EditText에 데이터를 저장하고, SharedPreferences를 이용해 데이터를 다시 사용하는 앱을 구현해보았다.
1. SharedPreferences
1) SharedPreferences sharedPreferences = getSharedPreferences( shared, 0 );
getSharedPreferences() 함수를 이용하여 SharedPreferences를 정의했다.
getSharedPreferences()는 두가지의 매개변수를 갖는데,
첫 번째 인자는 키 값을 의미하고
두 번째 인자는 모드를 의미하는데
모드는
MODE_PRIVATE( 자기 앱 내에서만 사용 )
MODE_WORLD_READABLE( 다른 앱에서 읽기 가능 )
MODE_WORLD_WRITEABLE( 다른 앱에서 쓰기 가능 ) 세 가지가 있다.
여기서 0은 MODE_PRIVATE을 의미한다.
2) 키 값
이건 주의사항인데 21번째 줄의 "key"와 32번째 줄의 "key" 는 키 값을 의미한다.
같은 키 값을 사용하지 않으면 에러가 발생한다.( 같은 데이터를 의미할 때 )
2. Editor
1) SharedPreferences.Editor editor = sharedPreferences.edit();
SharedPreferences에 값을 저장하기 위해서는 에디터가 필요하다.
SharedPreferences 클래스의 edit 함수를 이용하여 에디터를 선언한다.
2) editor.commit();
SharedPreferences에 값을 넣은 후 저장하는 의미를 갖고 있다.
commit함수 말고 apply함수를 써도 된다고 하나, 강의에서 commit함수를 사용하였으므로 나도 commit을 사용했다.
3. void onDestroy()
onCreate 외에 앱을 종료시켰을 때( 정확히는 액티비티를 벗어났을 때 ) 실행되는 함수인 onDestroy를 호출하였다.
이는 앱이 종료될 때 데이터를 SharedPreferences에 저장하기 위해 호출하였다.
onDestroy같이 새로운 생명주기를 넣어줄 때는 안드로이드 스튜디오 상에서 Ctrl + O 단축키를 이용하면 된다.
'Legacy' 카테고리의 다른 글
[안드로이드 스튜디오 독학#7] Navigation Menu (0) | 2021.01.09 |
---|---|
[안드로이드 스튜디오 독학#6] WebView (0) | 2021.01.08 |
[안드로이드 스튜디오 독학#4] ListView (0) | 2021.01.05 |
[안드로이드 스튜디오 독학#3] Intent, ImageView, Toast (0) | 2021.01.05 |
[안드로이드 스튜디오 독학#2-1] 또 다른 OnClick 구현 (0) | 2021.01.05 |