從零開始學android(資料存放區(1)SharedPreferences屬性檔案.三十五.)

來源:互聯網
上載者:User

從零開始學android(資料存放區(1)SharedPreferences屬性檔案.三十五.)

在android中有五種儲存資料的方法,分別是:

Shared Preferences
Store private primitive data in key-value pairs.
對應屬性的鍵值對屬性檔案儲存體
Internal Storage
Store private data on the device memory.
裝置記憶體儲存
External Storage
Store public data on the shared external storage.
外部儲存空間儲存,如記憶卡
SQLite Databases
Store structured data in a private database.
sqlite資料庫儲存
Network Connection

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內部儲存空間

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.