想要儲存一些簡單的資料,
可以使用SharedPreferences來儲存,
假設現在有三個欄位, 分別是名字, 電話和性別,
我不想要離開程式以後, 資料就消失了,
我可以把這些數值利用SharedPreferences存起來。
首先xml設計好三個欄位,以及三個按鈕,
方便驗證我們是否有將資料存入
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Name"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:hint="givemepass"
android:id="@+id/nameField"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Phone"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:hint="0987654321"
android:id="@+id/phoneField"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Sex"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:hint="Male/Female"
android:id="@+id/sexField"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Save"
android:id="@+id/saveButton"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Clear"
android:id="@+id/clearButton"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Read"
android:id="@+id/readButton"
/>
</LinearLayout>
其中hint屬性可以提示使用者該輸入什麼值
接著我們將元件都初始化
public void initComponent(){
name = (EditText)findViewById(R.id.nameField);
phone = (EditText)findViewById(R.id.phoneField);
sex = (EditText)findViewById(R.id.sexField);
save = (Button)findViewById(R.id.saveButton);
read = (Button)findViewById(R.id.readButton);
clear = (Button)findViewById(R.id.clearButton);
}
設定好每個欄位存在sharedPreferences裡面的名稱
private SharedPreferences settings;
private static final String data = "DATA";
private static final String nameField = "NAME";
private static final String phoneField = "PHONE";
private static final String sexField = "SEX";
接著我們設定存取資料的函式
public void readData(){
settings = getSharedPreferences(data,0);
name.setText(settings.getString(nameField, ""));
phone.setText(settings.getString(phoneField, ""));
sex.setText(settings.getString(sexField, ""));
}
public void saveData(){
settings = getSharedPreferences(data,0);
settings.edit()
.putString(nameField, name.getText().toString())
.putString(phoneField, phone.getText().toString())
.putString(sexField, sex.getText().toString())
.commit();
}
settings是SharedPreferences的物件,
我們首先在saveData裡面建立一個叫做"DATA"資料區,
然後將每個欄位的資料存進去,
接著readData把每個欄位的資料取出來,
放進所對應的editText裡面。
所以我們事件就幾乎是寫好了
public void setEventListener(){
save.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
saveData();
}
});
read.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
readData();
}
});
clear.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
name.setText("");
phone.setText("");
sex.setText("");
}
});
}
save負責寫入, read負責讀出, clear則是把EditText上面的文字全部清除
因此我們就可以驗證, 當我們輸入好資料以後,
按下save在按下clear然後按下read,資料就全部恢復原狀。
程式碼下載
http://uploadingit.com/file/dynjofirz22caxz3/SharedPreferencesDemo.zip
全站熱搜
留言列表