废话不多讲,直接入题:以下,SharedPreferences小马就简称SP了:

   SP一般建议在全局文件中操作,即:在继承Application的扩展类中操作,这样做的原因是SP只是为了存储一些应用及游戏配置,并不能存储大量数据,而且操作次数也不会太过频繁,因此建议在全局中操作和使用哦:

先来看下效果图:主要看效果图下面的讲解,嘿嘿

 

 

 

将XML文件导出后的结果如下图:

 


   
   
  1. package com.mzh.www; 
  2.  
  3. import android.app.Activity; 
  4. import android.content.Context; 
  5. import android.content.Intent; 
  6. import android.content.SharedPreferences; 
  7. import android.os.Bundle; 
  8. import android.preference.Preference; 
  9. import android.preference.PreferenceActivity; 
  10. import android.preference.PreferenceManager; 
  11. import android.view.View; 
  12. import android.view.View.OnClickListener; 
  13. import android.widget.Button; 
  14. import android.widget.EditText; 
  15. import android.widget.Toast; 
  16.  
  17.  
  18.  
  19. /**   
  20. * @Title: SharedPreferencesDemo.java 
  21. * @Package com.mzh.www 
  22. * @Description: SharedPreferences数据存储测试 
  23. * @author mzh 
  24. * @version V2.2 
  25. */ 
  26. public class SharedPreferencesDemo extends Activity { 
  27.      
  28.     //声明 
  29.     private EditText XM ; 
  30.     private EditText NL ; 
  31.     private EditText SG ; 
  32.     private Button saveBtn ; 
  33.     private Button cancelBtn; 
  34.      
  35.     //SharedPreferences 
  36.     //SP文件名 
  37.     private static final String PREFERENCES_NAME = "XiaoMa_Guo"
  38.      
  39.      
  40.     /** 
  41.      * 存储模式: 
  42.      * 有四种模式,如果叠加模式可用以下写法,小马此例中仅叠加两种 
  43.      * MODE_PRIVATE   默认的模式,一般情况下使用 
  44.      * MODE_WORLD_READABLE  全局读 
  45.      * MODE_WORLD_WRITEABLE 全局写 
  46.      * MODE_MULTI_PROCESS 多进程间访问使用 
  47.      * 以上模式中全局指在任何地方都可以访问,至于操作得看是可以读 还是可以写啦  
  48.      */ 
  49.     private static final int PREFERENCES_MODE  
  50.                              = Context.MODE_WORLD_READABLE 
  51.                              +Context.MODE_WORLD_WRITEABLE; 
  52.      
  53.     /** Called when the activity is first created. */ 
  54.     @Override 
  55.     public void onCreate(Bundle savedInstanceState) { 
  56.         super.onCreate(savedInstanceState); 
  57.         setContentView(R.layout.main); 
  58.          
  59.         //资源定位 
  60.         XM = (EditText)findViewById(R.id.XM); 
  61.         NL = (EditText)findViewById(R.id.NL); 
  62.         SG = (EditText)findViewById(R.id.SG); 
  63.          
  64.         //添加监听 
  65.         saveBtn = (Button)findViewById(R.id.Save); 
  66.         cancelBtn = (Button)findViewById(R.id.Cancel); 
  67.         saveBtn.setOnClickListener(listener); 
  68.         cancelBtn.setOnClickListener(listener); 
  69.     } 
  70.      
  71.     /** 
  72.      * 监听哭实现 
  73.      */ 
  74.     private OnClickListener listener = new OnClickListener() { 
  75.          
  76.         @Override 
  77.         public void onClick(View v) { 
  78.             // TODO Auto-generated method stub 
  79.             switch (v.getId()) { 
  80.             case R.id.Save: 
  81.                 saveSharedPreferences(); 
  82.                 break
  83.             case R.id.Cancel: 
  84.                 finish(); 
  85.                 break
  86.  
  87.             default
  88.                 break
  89.             } 
  90.         } 
  91.  
  92.          
  93.         /** 
  94.          * 实现往SP中存值 
  95.          */ 
  96.         private void saveSharedPreferences() { 
  97.             //这个地方取SP文件的方式有两种: 
  98.              
  99.             //方法一如下:    
  100.             //这种方式是取得指定的那个SP文件 
  101.             SharedPreferences sharedPreferences =  
  102.                          getSharedPreferences(PREFERENCES_NAME, PREFERENCES_MODE); 
  103.              
  104.             //下面贴下getSharedPreferences方法的源码: 
  105.             /**小马英语一般,刚看这个很怕,但可以借助工作查嘛,朋友们也可以自己尝试下翻译它 
  106.              * Retrieve and hold the contents of the preferences file 'name', returning 
  107.              * a SharedPreferences through which you can retrieve and modify its 
  108.              * values.  Only one instance of the SharedPreferences object is returned 
  109.              * to any callers for the same name, meaning they will see each other's 
  110.              * edits as soon as they are made. 
  111.              * 
  112.              * @param name Desired preferences file. If a preferences file by this name 
  113.              * does not exist, it will be created when you retrieve an 
  114.              * editor (SharedPreferences.edit()) and then commit changes (Editor.commit()). 
  115.              * @param mode Operating mode.  Use 0 or {@link #MODE_PRIVATE} for the 
  116.              * default operation, {@link #MODE_WORLD_READABLE} 
  117.              * and {@link #MODE_WORLD_WRITEABLE} to control permissions. 
  118.              * 
  119.              * @return Returns the single SharedPreferences instance that can be used 
  120.              *         to retrieve and modify the preference values. 
  121.              * 
  122.              * @see #MODE_PRIVATE 
  123.              * @see #MODE_WORLD_READABLE 
  124.              * @see #MODE_WORLD_WRITEABLE 
  125.              * 写这么一大段,意思一句总结,就是有多个SP文件存在时,可以用指定的SP文件名与模式取SP文件,简单吧?而且这个里面的文件 
  126.              * 名可以自定义,如果文件不存在,它会自动创建的啦,如:XiaoMaGuo.xml 
  127.              * SharedPreferences aPrefs = getSharedPreferences("XiaoMaGuo", 0); 
  128.               
  129.             public abstract SharedPreferences getSharedPreferences(String name, 
  130.                     int mode); 
  131.              */ 
  132.              
  133.             /*//方法二如下: 
  134.             //这种方式是取得默认的那个SP文件 
  135.             sharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);*/ 
  136.              
  137.              
  138.             //下面贴段源码,加深上PreferenceManager方式的理解: 
  139.             /** 
  140.              * Used to help create {@link Preference} hierarchies 
  141.              * from activities or XML. 
  142.              * <p> 
  143.              * In most cases, clients should use别的先不看,这句意思:在有多个分支,或者说多个SP文件时 
  144.              * {@link PreferenceActivity#addPreferencesFromIntent} or 这个的意思是:从匹配的Intent中加载SP文件 
  145.              * {@link PreferenceActivity#addPreferencesFromResource(int)}.这个意思是:通过指定的XML文件,将加载此 
  146.              * XML文件到当前SP层级中,也就是把指定的XML文件加载到当前的配置中来,吼吼 
  147.              *  
  148.              * @see PreferenceActivity 
  149.               
  150.             public class PreferenceManager {*/ 
  151.  
  152.              
  153.             //取编辑对象的方法一样 
  154.             SharedPreferences.Editor editor = sharedPreferences.edit(); 
  155.                 if
  156.                     !"".equals(XM.getText().toString()) 
  157.                     &&!"".equals(NL.getText().toString()) 
  158.                     &&!"".equals(SG.getText().toString()) 
  159.                   ){ 
  160.                     editor.putString("Name", XM.getText().toString()); 
  161.                     editor.putInt("Age", Integer.parseInt(NL.getText().toString())); 
  162.                     editor.putFloat("Height", Float.parseFloat(SG.getText().toString())); 
  163.                     editor.commit(); 
  164.                     Toast.makeText(SharedPreferencesDemo.this"数据保存成功!"
  165.                           Toast.LENGTH_LONG).show(); 
  166.                     Intent intent = new Intent(SharedPreferencesDemo.this,ShowPreferences.class); 
  167.                     startActivity(intent); 
  168.                 }else
  169.                     Toast.makeText(SharedPreferencesDemo.this"数据不完整,保存失败!", Toast.LENGTH_LONG).show(); 
  170.                 } 
  171.         } 
  172.          
  173.     }; 

        最后,小马会把自己的DEMO上传到附件,供跟小马处于同一起跑线上的朋友们学习使用,但不要COPY哦,自己敲一遍就记得比较清楚啦,吼吼, 小马刚开始写文章,如果有错误的地方,请直接批评指出,批评就是对我最好的提高,最后,谢谢看文章的你给小马多提些建议,小马有错的地方肯定不含糊,绝对会改正,谢谢