Android鍵值對儲存成XML檔案SharedPreferences

我叫阿狸貓發表於2014-01-19

需求:開啟應用的時候讀取原先已經設定的好內容,點選儲存按鈕的時候修改原先的內容,再次開啟顯示新設定的內容




這個配置的xml檔案位於     /data/data/應用所在包名/shared_prefs/下


main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名" />

    <EditText
        android:id="@+id/nameET"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName" >
        <requestFocus />
    </EditText>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="電話" />

    <EditText
        android:id="@+id/phoneET"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="phone" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="郵箱" />

    <EditText
        android:id="@+id/emailET"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress" />


    <Button
        android:onClick="onClick"
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="儲存為預設" />

</LinearLayout>



MainActivity

import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
    private EditText nameET;
	private EditText phoneET;
	private EditText emailET;
	private SharedPreferences sp;

	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        nameET = (EditText) findViewById(R.id.nameET);
        phoneET = (EditText) findViewById(R.id.phoneET);
        emailET = (EditText) findViewById(R.id.emailET);
    	/**
    	 * 第一個引數是檔名,不需要手動加.xml字尾,系統會自動加。  例如這個檔名就叫config.xml
    	 * 第二個引數是,模式  
    	 */
        sp = getSharedPreferences("config", MODE_PRIVATE);//獲取物件,預設指向當前應用所在資料夾
        //sp = getPreferences(MODE_PRIVATE);  如果用這個方法獲取SharedPreferences,那麼檔名預設是當前類名MainActivity
        nameET.setText(sp.getString("name", ""));//獲取資料  sp.getString()第一個引數是要獲取資料的引數名,第二個引數是,如果不存在這個引數名,顯示的預設值
        phoneET.setText(sp.getString("phone", ""));
        emailET.setText(sp.getString("email", ""));
    }
    
    public void onClick(View view){
    	String name = nameET.getText().toString();
    	String phone = phoneET.getText().toString();
    	String email = emailET.getText().toString();
    	
    	Editor editor = sp.edit();//獲取一個編輯器物件
    	editor.putString("name", name);//儲存資料,還未進入檔案
    	editor.putString("phone", phone);
    	editor.putString("email", email);
    	editor.commit();//提交修改(類似事務)
    	Toast.makeText(getApplicationContext(), "設定成功", Toast.LENGTH_SHORT).show();
    }
}



相關文章