本文實(shí)例講述了Android持久化技術(shù)之SharedPreferences存儲(chǔ)。分享給大家供大家參考,具體如下:
1、SharedPreferences存儲(chǔ)
在前面一篇文章《Android持久化技術(shù)之文件的讀取與寫入實(shí)例詳解》中,我們介紹了Android持久化技術(shù)的文件的讀取與寫入。在本文中,繼續(xù)介紹Android持久化技術(shù)另外一個(gè)SharedPreferences存儲(chǔ)。
(1)SharedPreferences存儲(chǔ)方式是基于key-value的,通過(guò)key可以找到對(duì)應(yīng)的value。
(2)支持多種數(shù)據(jù)類型存儲(chǔ),比如字符串、整形、布爾型等,并有對(duì)應(yīng)的存儲(chǔ)與獲取方法。
(3)獲取SharedPreferences對(duì)象有多種方式。
使用Context類的getSharedPreferences方法。
使用Activity類的getPreferences方法
使用PreferenceManager類的getDefaultSharedPreferences方法
(4)當(dāng)存儲(chǔ)時(shí),需要通過(guò)SharedPreferences對(duì)象獲取SharedPreferences.Editor對(duì)象
(5)默認(rèn)存儲(chǔ)路徑為:/data/data/包名/shared_prefs/目錄
(6)存儲(chǔ)文件類型為xml文件
2、示例
場(chǎng)景:點(diǎn)擊保存按鈕,存儲(chǔ)數(shù)據(jù);點(diǎn)擊恢復(fù)按鈕,恢復(fù)數(shù)據(jù)。
(1)activity_main.xml
<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:stretchColumns="1" > <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Account:" /> <EditText android:id="@+id/account" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="Input your account here" android:ems="10" > </EditText> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Password:" /> <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:inputType="textPassword" > </EditText> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/login" android:layout_span="2" android:layout_height="wrap_content" android:text="save data" /> </TableRow> <TextView android:layout_width="wrap_content" android:layout_height="20dp" android:background="#ff0000" android:text="我是萬(wàn)惡的分割線" android:textSize="20sp" android:gravity="center" /> <TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Account:" /> <EditText android:id="@+id/account2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" > </EditText> </TableRow> <TableRow android:id="@+id/tableRow5" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Password:" /> <EditText android:id="@+id/password2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:inputType="textPassword" > </EditText> </TableRow> <TableRow android:id="@+id/tableRow6" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/login2" android:layout_span="2" android:layout_height="wrap_content" android:text="restore data" /> </TableRow></TableLayout>
(2)MainActivity.java
package com.example.testsharedpreferences;import android.app.Activity;import android.content.SharedPreferences;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;/** * Android 持久化技術(shù)-----SharedPreferences存儲(chǔ) * @author yy * */public class MainActivity extends Activity { private EditText accountEdit; private EditText passwordEdit; private Button saveButton; private Button restoreButton; private SharedPreferences pref; private SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //存儲(chǔ)按鈕 saveButton = (Button) findViewById(R.id.login); //為存儲(chǔ)按鈕添加點(diǎn)擊事件 saveButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //獲取SharedPreferences對(duì)象 //第一個(gè)參數(shù):文件名,沒(méi)有則新建。第二個(gè)參數(shù):寫入模式-覆蓋 pref = getSharedPreferences("second", MODE_PRIVATE); //獲取SharedPreferences.Editor對(duì)象 editor = pref.edit(); //獲取輸入的賬號(hào)內(nèi)容 accountEdit = (EditText) findViewById(R.id.account); String account = accountEdit.getText().toString(); //獲取輸入的密碼內(nèi)容 passwordEdit = (EditText) findViewById(R.id.password); String password = passwordEdit.getText().toString(); //存儲(chǔ)用戶名和密碼 editor.putString("account", account); editor.putString("password", password); //提交 editor.commit(); Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_SHORT).show(); } }); //獲取恢復(fù)按鈕對(duì)象 restoreButton = (Button) findViewById(R.id.login2); //添加事件 restoreButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //獲取SharedPreference對(duì)象 pref = getSharedPreferences("second", MODE_PRIVATE); //讀取內(nèi)容 String account = pref.getString("account", "this is default value"); String password = pref.getString("password", "this is default value"); //設(shè)置到響應(yīng)位置 EditText editText2 = (EditText)findViewById(R.id.account2); editText2.setText(account); EditText passwordText2 = (EditText) findViewById(R.id.password2); passwordText2.setText(password); Toast.makeText(getApplicationContext(), "恢復(fù)成功", Toast.LENGTH_SHORT).show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}3、結(jié)果
輸入內(nèi)容后,當(dāng)點(diǎn)擊“save data”按鈕后,存儲(chǔ)文件為second.xml,如下:

對(duì)應(yīng)內(nèi)容:

下面是效果圖:

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選