SharedPreferences 기본 사항

4913 단어
압축 파일 항목 보기:Shared Preferences Demo.zip
1. 데이터 양이 적고 뚜렷한 K-V 형식의 데이터는 SharedPreferences로 저장하기에 적합하다.SharedPreferences 데이터는/data/data/패키지 이름/SharedPreferences 디렉토리에 xml 파일로 저장됩니다. 예를 들면 다음과 같습니다.
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
  <string name="hi3">liaoliuqing</string>
  <string name="hi">liaoliuqing</string>
  <string name="name">liaoliuqing</string>
</map>

2. SharedPreferences 데이터를 쓰는 기본 절차
(1) SharedPreferences 인스턴스 가져오기
(2) SharedPreferences 인스턴스에서 Editor 인스턴스를 가져옵니다.주:SharedPreferences 자체는 데이터를 쓰는 능력을 제공하지 않고 내부 클래스를 통해SharedPreferences.Editor에서 수행합니다.
(3) Editor의 write 방법을 호출하고 뒤에 commit이 있다는 것을 명심하세요.
3. SharedPreferences 데이터를 읽는 기본 절차
(1) SharedPreferences 인스턴스 가져오기
(2) 단일 데이터 읽기: Shared Preferences의 getXxx () 방법을 호출하여 각각 String, int, long 등 형식을 읽습니다.
(3) 전체 데이터 읽기: Shared Preferences의 getall () 방법을 호출하고 맵을 훑어봅니다.
인스턴스:
그래픽 인터페이스는 다음과 같습니다.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/et_key"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:hint="@string/key" />

    <EditText
        android:id="@+id/et_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:hint="@string/value" />

    <Button
        android:id="@+id/bt_write"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/write" />

    <Button
        android:id="@+id/bt_read"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/read" />

    <TextView
        android:id="@+id/tv_content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</LinearLayout>
package com.ljh.sharepreferencedemo;

import java.util.Map;
import java.util.Map.Entry;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		final EditText etKey = (EditText) findViewById(R.id.et_key);
		final EditText etValue = (EditText) findViewById(R.id.et_value);
		Button btRead = (Button) findViewById(R.id.bt_read);
		Button btWrite = (Button) findViewById(R.id.bt_write);
		final TextView tvContent = (TextView) findViewById(R.id.tv_content);
		
		//1、 SharedPreferences 。SharedPreferences , SharedPreferences , Context getSharedPreferences() 。
		final SharedPreferences preference = getSharedPreferences("test", MODE_PRIVATE);
		
		//2、 SharedPreferences。Editor , 。 。
		final SharedPreferences.Editor editor = preference.edit();
		
		btWrite.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				String key = etKey.getText().toString().trim();
				String value = etValue.getText().toString().trim();
				//3、 commit。
				editor.putString(key, value);
				editor.commit();
			}
			
		});
		
		btRead.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				//2、 key 
/*				String content = preference.getString("name", "lujinhong");
				tvContent.setText(content);*/
				//2、 
				String content = "";
				Map<String, ?> allContent = preference.getAll();
				// map 
				for(Map.Entry<String, ?>  entry : allContent.entrySet()){
					content+=(entry.getKey()+entry.getValue());
				}
				tvContent.setText(content);
				
			}
			
		});
		
	}

}

좋은 웹페이지 즐겨찾기