Android SharedPreferences  사용 방법
Android/JAVA

Android SharedPreferences 사용 방법

728x90

SharedPreferences 란

 

안드로이드에서 DB 연결을 하면서 데이터를 불러올 수도 있지만 그렇게 계속 연결하기에는 

너무 많은 작업을 필요로 합니다. 

그래서 안드로이드에서는 간단한 값들을 편하게 사용할 수 있는 SharedPreferences를 사용하면 적합하다. 

 

또한 어플리케이션, 가상 디바이스에 

/data/data/패키지명/shared_prefs/***.xml 형식으로 저장된다.

 

 

그럼 이제 바로 어떻게 사용하는지에 대해 알아보도록 하겠습니다. 

저같은 경우에는 버튼을 만들어서 SharedPreferences의 기능 마다 어떻게 데이터가 변하는지 보도록 하겠습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    public void insertbtn(View v) {
        //저같은 경우에는 버튼을 따로 선언안하고 이런식으로 만들어서 사용합니다.
        //일단 Shared 에 저장할 변수 데이터를 만들어 줍니다.
        String first = "123";
        String second = "456";
        //그 이후에 Shared에 insert 하기 위해 선언을 해줍니다.
        //getSharedPreferences(String name, int mode)
        SharedPreferences sharedPreferences = getSharedPreferences("shared", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        //위에서 지정한 shared.xml에 어떤 key 값으로 저장할지 정하고 key에 입력할 데이터를 뒤에 적습니다.
        editor.putString("First", first);
        editor.putString("Second", second);
        //데이터를 저장하거나 삭제할때는 반드시 commit()를 해주셔야 합니다.
        editor.commit();
    }
cs

이런식으로 저장을 시키고 확인하는 방법은 2가지 방법이 있습니다. 

 

1. 위에서 설명드렸던 .xml 파일에 직접들어가서 확인하는 방법과 

2. textview를 이용하여 찍어보거나 log로 확인하는 방법이 있는데 두가지다 보여드리도록 하겠습니다. 

 

1.

 

2. 두번째 방법은 코딩을 하고 보여드리도록 하겠습니다.

1
2
3
4
5
6
7
8
9
 public void testbtn(View v) {
        SharedPreferences sharedPreferences = getSharedPreferences("shared", MODE_PRIVATE);
        //.getString("KEY", VALUE)
        //첫번째 인자는 키값, 두번째 인자는 해당값이 없을 경우 반환할 값을 넣어줍니다. 
        String first1 = sharedPreferences.getString("First""");
        String second1 = sharedPreferences.getString("Second""");
        //또한 TextView에 .setText를 해서 확인해보도록 하겠습니다.
        textView.setText("First : " + first1 + "\n" + "Second : " + second1);
    }
cs
 

 

이런식으로 구성하고 실행하게 되면 위에서 저장했던 first 값과 second 값이 textview에 찍히면 저장이 된 것을 확인 하실 수 있습니다.

 

 

 

그리고 이제 특정 부분삭제와, 전체 삭제에 대해 알아보도록 하겠습니다. 

 

특정 부분 삭제는 editor.remove(key); 를 사용하고 

전체 삭제는 editor.clear 를 사용하게 됩니다. 

두개다 버튼을 사용해서 구성해보도록 하겠습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
public void deletebtn(View v) {
        SharedPreferences sharedPreferences = getSharedPreferences("shared", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.remove("First");
        editor.commit();
    }
 
    public void alldeletebtn(View v) {
        SharedPreferences sharedPreferences = getSharedPreferences("shared", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.clear();
        editor.commit();
    }
cs

 

구현 화면 입니다.  부분삭제를 하고 나서의 AVD 화면 입니다. 

 

 

전체 삭제를 하고 나서의 AVD 화면 입니다. 

 

 

여기 까지 진행하셨으면 전반적인 SharedPreferences 에 대해 조금은 이해가 되셨으리라 생각됩니다. 

그 이후에는 다른 액티비티 에서도 사용할 수 있는지 테스트를 해보도록 하겠습니다. 

보통 다른 액티비티로 이동할 때 intent 를 사용하는데 이때 intent로 데이터를 전송할 수 있습니다. 

하지만 저희는 SharedPreferences를 사용해서 불러보도록 하겠습니다. 

 

1
2
3
4
    public void intentbtn(View v){
        Intent intent  = new Intent(getApplicationContext(), Main2Activity.class);
        startActivity(intent);
    }
cs

 

저는 Main2Activitiy로 만들어서 테스트를 해보겠습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
 
import org.w3c.dom.Text;
 
public class Main2Activity extends AppCompatActivity {
 
    TextView textView1;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        textView1 = findViewById(R.id.textView1);
 
 
        SharedPreferences sharedPreferences = getSharedPreferences("shared", MODE_PRIVATE);
        String first1 = sharedPreferences.getString("First""");
        String second1 = sharedPreferences.getString("Second""");
        textView1.setText("여기는 Main2Activity 입니다. "+"\n"+"First : " + first1 + "\n" + "Second : " + second1);
    }
}
cs

똑같이 호출을 했을 시  결과 화면 입니다. 

 

넘어간 Activity에서도 데이터를 사용할 수 있다는 것을 확인할 수 있습니다. 

 

전체 소스입니다. 

 

MainActivity.class

 

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.example.wp010.sharedpreferences;
 
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
 
    TextView textView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.textView);
 
    }
 
    public void insertbtn(View v) {
        //저같은 경우에는 버튼을 따로 선언안하고 이런식으로 만들어서 사용합니다.
        //일단 Shared 에 저장할 변수 데이터를 만들어 줍니다.
        String first = "123";
        String second = "456";
        //그 이후에 Shared에 insert 하기 위해 선언을 해줍니다.
        //getSharedPreferences(String name, int mode)
        SharedPreferences sharedPreferences = getSharedPreferences("shared", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        //위에서 지정한 shared.xml에 어떤 key 값으로 저장할지 정하고 key에 입력할 데이터를 뒤에 적습니다.
        editor.putString("First", first);
        editor.putString("Second", second);
        //데이터를 저장하거나 삭제할때는 반드시 commit()를 해주셔야 합니다.
        editor.commit();
    }
 
    public void testbtn(View v) {
        SharedPreferences sharedPreferences = getSharedPreferences("shared", MODE_PRIVATE);
        //.getString("KEY", VALUE)
        //첫번째 인자는 키값, 두번째 인자는 해당값이 없을 경우 반환할 값을 넣어줍니다.
        String first1 = sharedPreferences.getString("First""");
        String second1 = sharedPreferences.getString("Second""");
        //또한 TextView에 .setText를 해서 확인해보도록 하겠습니다.
        textView.setText("First : " + first1 + "\n" + "Second : " + second1);
    }
 
    public void deletebtn(View v) {
        SharedPreferences sharedPreferences = getSharedPreferences("shared", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.remove("First");
        editor.commit();
    }
 
    public void alldeletebtn(View v) {
        SharedPreferences sharedPreferences = getSharedPreferences("shared", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.clear();
        editor.commit();
    }
    public void intentbtn(View v){
        Intent intent  = new Intent(getApplicationContext(), Main2Activity.class);
        startActivity(intent);
    }
 
}
 
 
cs

 

activity_main.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
52
53
54
55
56
57
58
59
60
<?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"
    android:orientation="vertical"
    tools:context=".MainActivity">
 
    <Button
        android:id="@+id/insertbtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12dp"
        android:onClick="insertbtn"
        android:text="insertbtn"
        tools:ignore="OnClick" />
 
    <Button
        android:id="@+id/testbtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12dp"
        android:onClick="testbtn"
        android:text="testbtn"
        tools:ignore="OnClick" />
 
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12dp"
        android:text="TextView" />
 
    <Button
        android:id="@+id/Deletebtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12dp"
        android:onClick="deletebtn"
        android:text="deletebtn" />
 
    <Button
        android:id="@+id/alldelete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12dp"
        android:onClick="alldeletebtn"
        android:text="alldeletebtn"
        tools:ignore="OnClick" />
    <Button
        android:id="@+id/intentbtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12dp"
        android:onClick="intentbtn"
        android:text="intentbtn"
        tools:ignore="OnClick" />
 
</LinearLayout>
cs

 

Main2Activity.class 는 위에 전체 소스가 있어서 생략하겠습니다. 

 

activity_main2.xml

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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=".Main2Activity">
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />
</android.support.constraint.ConstraintLayout>
cs

 

오늘도 도움이 되셨으면 좋겠습니다. 다음에는 Button 여러가지 사용법에 대해 알아보도록 하겠습니다.

728x90