Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android開發入門:SharedPreferences

Android開發入門:SharedPreferences

編輯:Android開發實例

  SharedPreferences: 是個接口,用來存儲KEY/VALUE數據!http://developer.android.com/reference/android/content/SharedPreferences.html

它的使用很簡單分三步:

  1. 獲取對象:getSharedPreferences(String filename, int mode)
    1. filename: 指定存儲的文件名
    2. mode:文件的操作方式: 這些靜態常量定義在Activity中!更加詳細的解釋,請去查詢API(這是一個好習慣)。
  2. 調用edit()方法獲得SharedPreferences.Editor對象,之後Invoke putXXX系列方法,進行存儲。
  3. Invoke commit() 進行保存。

解惑:

  1. Q: 文件存儲在什麼地方? 答:adb shell 之後,進入/data/data/your_package_name/shared_prefs 這個目錄裡。
  2. Q: 文件名要指定存儲格式麼? 答:完全不需要指定,因為存儲到shared_prefs目錄中,文件的後綴格式為:.xml;是大家熟悉的xml文件格式。
  3. Q: 如果不小心指定的文件的存儲格式:比如 demo.xml,會怎麼樣? 答:沒有關系!在shared_prefs目錄,將會看到demo.xml.xml;系統會為每個文件名自動加後綴格式。
  4. Q: 如何查看文件? 答:adb shell 之後,cd /data/data/your_package_name/shared_prefs 這個目錄裡; 另外可以在Eclipse中DDMS中的File explorer中查看!

代碼樣例:

layout file:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.      android:layout_width="fill_parent" 
  4.      android:layout_height="fill_parent" 
  5.      android:orientation="vertical" 
  6.      android:paddingLeft="@dimen/activity_vertical_padding" > 
  7.    
  8.      <TextView 
  9.          android:layout_width="fill_parent" 
  10.          android:layout_height="wrap_content" 
  11.          android:text="@string/username" 
  12.          android:textSize="@dimen/textview_20dp" /> 
  13.    
  14.      <EditText 
  15.          android:id="@+id/etName" 
  16.          android:layout_width="@dimen/edittext_width_150dp" 
  17.          android:layout_height="wrap_content" 
  18.          android:layout_margin="@dimen/activity_margin" 
  19.          android:inputType="text" /> 
  20.    
  21.      <TextView 
  22.          android:layout_width="fill_parent" 
  23.          android:layout_height="wrap_content" 
  24.          android:text="@string/habit" 
  25.          android:textSize="@dimen/textview_20dp" /> 
  26.    
  27.      <EditText 
  28.          android:id="@+id/etHabit" 
  29.          android:layout_width="fill_parent" 
  30.          android:layout_height="wrap_content" 
  31.          android:layout_margin="@dimen/activity_margin" 
  32.          android:inputType="text" /> 
  33.    
  34.      <CheckBox 
  35.          android:id="@+id/cbEmployee " 
  36.          android:layout_width="fill_parent" 
  37.          android:layout_height="wrap_content" 
  38.          android:layout_margin="@dimen/activity_margin" 
  39.          android:text="@string/isEmployee" /> 
  40.    
  41.      <TextView 
  42.          android:layout_width="fill_parent" 
  43.          android:layout_height="wrap_content" 
  44.          android:text="@string/company" 
  45.          android:textSize="@dimen/textview_20dp" /> 
  46.    
  47.      <RadioGroup 
  48.          android:id="@+id/rgCompanyType" 
  49.          android:layout_width="fill_parent" 
  50.          android:layout_height="wrap_content" > 
  51.    
  52.          <RadioButton 
  53.              android:id="@+id/rbCompany1" 
  54.              android:layout_width="fill_parent" 
  55.              android:layout_height="wrap_content" 
  56.              android:layout_margin="@dimen/activity_margin" 
  57.              android:text="@string/rbCompany1" /> 
  58.    
  59.          <RadioButton 
  60.              android:id="@+id/rbCompany2" 
  61.              android:layout_width="fill_parent" 
  62.              android:layout_height="wrap_content" 
  63.              android:layout_margin="@dimen/activity_margin" 
  64.              android:text="@string/rbCompany2" /> 
  65.    
  66.          <RadioButton 
  67.              android:id="@+id/rbCompany3" 
  68.              android:layout_width="fill_parent" 
  69.              android:layout_height="wrap_content" 
  70.              android:layout_margin="@dimen/activity_margin" 
  71.              android:text="@string/rbCompany3" /> 
  72.      </RadioGroup> 
  73.    
  74.      <Button 
  75.          android:id="@+id/shared_pre_click" 
  76.          android:layout_width="wrap_content" 
  77.          android:layout_height="wrap_content" 
  78.          android:text="@string/display" /> 
  79.    
  80.      <TextView 
  81.          android:id="@+id/shared_pre_text" 
  82.          android:layout_width="wrap_content" 
  83.          android:layout_height="wrap_content" 
  84.          android:hint="" 
  85.          android:textIsSelectable="false" /> 
  86.    
  87.  </LinearLayout> 

Note: strings文件,dimens文件可以自定義,這裡不給出!

Demo code:

  1. package com.ringcentral.demowork.storedata;  
  2.    
  3.  import android.app.Activity;  
  4.  import android.content.SharedPreferences;  
  5.  import android.os.Bundle;  
  6.  import android.view.View;  
  7.  import android.view.Window;  
  8.  import android.widget.Button;  
  9.  import android.widget.CheckBox;  
  10.  import android.widget.EditText;  
  11.  import android.widget.RadioButton;  
  12.  import android.widget.RadioGroup;  
  13.  import android.widget.TextView;  
  14.  import android.widget.Toast;  
  15.    
  16.  import com.ringcentral.demowork.R;  
  17.    
  18.  public class UsingSharedPreferences extends Activity {  
  19.      private SharedPreferences spfPreferences = null;  
  20.      private final String fileName = "spfDemofile.xml";  
  21.    
  22.      private EditText edName;  
  23.      private EditText etHabit;  
  24.      private CheckBox cbEmployee;  
  25.    
  26.      private RadioGroup rGroup;  
  27.  //    private RadioButton one;  
  28.      private RadioButton two;  
  29.  //    private RadioButton three;  
  30.    
  31.      private Button displayButton;  
  32.      private TextView displayTextView;  
  33.        
  34.      @Override 
  35.      public void onCreate(Bundle savedInstanceState) {  
  36.          super.onCreate(savedInstanceState);  
  37.          this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
  38.          setContentView(R.layout.shared_preferences);  
  39.          spfPreferences = getSharedPreferences(fileName, MODE_PRIVATE);  
  40.          init();  
  41.            
  42.          displayButton.setOnClickListener(new View.OnClickListener() {  
  43.    
  44.              @Override 
  45.              public void onClick(View v) {  
  46.                  // TODO Auto-generated method stub  
  47.                  SharedPreferences.Editor editor = spfPreferences.edit();  
  48.                  if (edName.getText().toString() == null 
  49.                          || edName.getText().toString().equalsIgnoreCase("")) {  
  50.                      Toast.makeText(UsingSharedPreferences.this, "請設置姓名",  
  51.                              Toast.LENGTH_LONG).show();  
  52.                      displayTextView.setText("");  
  53.                      return;  
  54.                  }  
  55.                  if (!cbEmployee.isChecked()) {  
  56.                      rGroup.clearCheck();  
  57.                      editor.putInt("radio", -1);  
  58.                  }   
  59.                  editor.putInt("radio", rGroup.getCheckedRadioButtonId());  
  60.                  editor.putString("Name", edName.getText().toString());  
  61.                  editor.putString("Habit", etHabit.getText().toString());  
  62.                  editor.putBoolean("check", cbEmployee.isChecked());  
  63.    
  64.                  editor.commit();  
  65.                  StringBuilder sb = new StringBuilder();  
  66.                    
  67.                  sb.append(spfPreferences.getString("Name", "ADMIN"))  
  68.                  .append("\t")  
  69.                  .append(spfPreferences.getString("Habit", "無"))  
  70.                  .append("\t")  
  71.                  .append(spfPreferences.getBoolean("check", false))  
  72.                  .append("\t");  
  73.                    
  74.                  int temp = spfPreferences.getInt("radio", -1);  
  75.                  if(temp==-1){  
  76.                      if(cbEmployee.isChecked()){  
  77.                          Toast.makeText(UsingSharedPreferences.this, "請選擇單位性質",  
  78.                                  Toast.LENGTH_LONG).show();  
  79.                          displayTextView.setText("");  
  80.                          return;  
  81.                      }  
  82.                      sb.append("\t").append(" 您未上班哦!");  
  83.                        
  84.                  }else{  
  85.                      RadioButton tempButton = (RadioButton) findViewById(spfPreferences  
  86.                              .getInt("radio", R.id.rbCompany2));  
  87.                      sb.append(tempButton.getText().toString());  
  88.                  }  
  89.                    
  90.                    
  91.                  displayTextView.setText(sb.toString());  
  92.              }  
  93.          });  
  94.    
  95.      }  
  96.    
  97.      private void init() {  
  98.          edName = (EditText) findViewById(R.id.etName);  
  99.          etHabit = (EditText) findViewById(R.id.etHabit);  
  100.          cbEmployee = (CheckBox) findViewById(R.id.cbEmployee);  
  101.  //        one = (RadioButton) findViewById(R.id.rbCompany1);  
  102.          two = (RadioButton) findViewById(R.id.rbCompany2);  
  103.  //        three = (RadioButton) findViewById(R.id.rbCompany3);  
  104.          rGroup = (RadioGroup) findViewById(R.id.rgCompanyType);  
  105.          displayButton = (Button) findViewById(R.id.shared_pre_click);  
  106.          displayTextView = (TextView) findViewById(R.id.shared_pre_text);  
  107.    
  108.      }  
  109.    
  110.      @Override 
  111.      public void onStop() {  
  112.          SharedPreferences.Editor editor = spfPreferences.edit();  
  113.          editor.putString("Name", edName.getText().toString());  
  114.          editor.putString("Habit", etHabit.getText().toString());  
  115.    
  116.          editor.putBoolean("check", cbEmployee.isChecked());  
  117.          editor.putInt("radio", rGroup.getCheckedRadioButtonId());  
  118.    
  119.          editor.commit();  
  120.          super.onStop();  
  121.      }  
  122.    
  123.  } 

Note: 通常把數據存儲放在onStop方法中,這裡給出了二個方式:一是在onStop中存儲,二是為方便查看效果添加了一個Button並且對Button事件進行所應的處理,當前Button後,會再一下行顯示數據。

效果如下:

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved