Store data on the web with your own network server.網路儲存
今天這一節我們一起來學習Shared Preferences 屬性檔案儲存體的方式來儲存簡單的資料
我們可以使用Shared Preferences 來儲存 booleans, floats, ints, longs, and strings型的簡單資料並以鍵值對的形式儲存為xml檔案。
為了執行個體化Shared Preferences 我們可以使用
getSharedPreferences()和getPreferences() 這兩個方法
第一個方法需要傳入一個檔案名稱和儲存的模式
第二種方法預設為只有一個屬性檔案,只需要傳入一個儲存模式就行了
儲存模式 :
MODE_PRIVATE僅本應用可用
MODE_APPEND可追加
MODE_WORLD_READABLE,可被其他應用讀
MODE_WORLD_WRITEABLE.可被其他應用寫
具體操作見代碼注釋
xml檔案
JAVA檔案
package com.example.sharedpreferences;import android.app.Activity;import android.content.SharedPreferences;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity {private SharedPreferences sharedPreferences;private Button saveData, getDate;public static final String FILENAME = "flyou";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sharedPreferences = getSharedPreferences(FILENAME, MODE_PRIVATE);saveData = (Button) this.findViewById(R.id.button1);getDate = (Button) this.findViewById(R.id.button2);saveData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSharedPreferences.Editor editor = sharedPreferences.edit();editor.putString("username", "jay");editor.putString("password", "553274238");Boolean flag = editor.commit();Toast.makeText(MainActivity.this, "執行完成,執行結果:-->" + flag, 2).show();}});getDate.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString username = sharedPreferences.getString("username","未找到匹配資訊");String password = sharedPreferences.getString("password","未找到使用者密碼");Toast.makeText(MainActivity.this,"使用者名稱:——>" + username + ",密碼:——>" + password, 2).show();}});}}
接下來使用改方法來實現本地記住帳號和密碼的功能
裡面可能會涉及到一些沒有講到的知識,大家可以先瞭解下,也對前面學過的其他組件進行一下回顧
<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+eG1szsS8/jwvcD4KPHA+1ve958PmPC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;">
登入後介面
JAVA檔案
package com.example.sharepreferencesdemo;import android.app.Activity;import android.app.ProgressDialog;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;public class MainActivity extends Activity {private SharedPreferences sharedPreferences;private Button login;private CheckBox checkBox;private EditText username, password;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);login = (Button) this.findViewById(R.id.button1);checkBox = (CheckBox) this.findViewById(R.id.checkBox1);username = (EditText) this.findViewById(R.id.editText1);password = (EditText) this.findViewById(R.id.editText2);sharedPreferences = getPreferences(MODE_PRIVATE);// 通過getPreferences執行個體化sharedPreferences對象String usernameString = sharedPreferences.getString("username", "");// 讀取使用者名稱username.setText(usernameString);// 為編輯框設定內容// 擷取複選框的選中狀態,如果選中的話就 進行記住密碼的操作if (sharedPreferences.getBoolean("checked", false)) {// 擷取密碼String passwordString = sharedPreferences.getString("password", "");// 設定編輯框資訊password.setText(passwordString);}login.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub// 通過edit 方法執行個體化Editor對象,儲存資訊SharedPreferences.Editor editor = sharedPreferences.edit();// 以索引值對的形式儲存資訊editor.putString("username", username.getText().toString());editor.putString("password", password.getText().toString());// 判斷複選框的選中狀態並進行儲存if (checkBox.isChecked()) {editor.putBoolean("checked", true);} else {editor.putBoolean("checked", false);}// 執行儲存操作editor.commit();// 設定進度對話方塊final ProgressDialog dialog = new ProgressDialog(MainActivity.this);// 設定標題dialog.setTitle("使用者登入");// 設定提示資訊dialog.setMessage("正在登入,請稍後……");// 開始進度對話方塊dialog.onStart();// 延時線程操作new Thread() {@Overridepublic void run() {// TODO Auto-generated method stubtry {// 休眠3秒Thread.sleep(3 * 1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {// 對話方塊消失dialog.dismiss();// 設定意圖轉跳Intent intent = new Intent(MainActivity.this,main.class);// 傳遞意圖資訊intent.putExtra("username", username.getText().toString());// 開始activity轉跳startActivity(intent);MainActivity.this.finish();}}}.start();// 開始線程操作// 顯示對話方塊dialog.show();}});}}
登陸後的介面
package com.example.sharepreferencesdemo;import android.app.Activity;import android.content.Intent;import android.graphics.Color;import android.os.Bundle;import android.view.Gravity;import android.widget.TextView;public class main extends Activity {private TextView text;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);super.setContentView(R.layout.linearlayout);text=(TextView)this.findViewById(R.id.textView3);Intent intent=getIntent();text.setTextSize(15);text.setGravity(Gravity.CENTER_HORIZONTAL);text.setTextColor(Color.CYAN);text.setText("歡迎: "+intent.getStringExtra("username"));}}
未點擊記住密碼,第二次登入。
點擊記住密碼登入
點擊記住密碼後,第三次登入
介紹了SharedPreferences屬性檔案的儲存,我們可以進行較小資料的快速儲存與便捷讀取
下節預報:Internal Storage內部儲存空間