編輯:Android開發實例
在所有應用程序中,都必然涉及數據的交互。有些時候,應用程序有少量的數據需要保存,並且這些數據的格式很簡單。比如:軟件設置、用戶賬戶設置,用戶習慣設置等,這個時候就可以用到SharedPreferences。
因為SharedPreferences本身是接口類型,程序無法直接創建SharedPreferences的實例,只能通過Context提供的getSharedPreferences(String name,int mode)方法來獲取SharedPreferences的實例。
public abstract SharedPreferences getSharedPreferences(String name,int mode)
第一個參數name為創建的文件名稱,如設定了name為"SilverDemo",則生成的文件名為:SilverDemo.xml。
第二個參數mode為int類型,此參數描述了創建的文件的可見性。有如下值:
SharedPreferences保存的數據主要是類似於配置信息格式的數據,因此它保存的數據主要是簡單類型的Key-value對。並且Value部分只能是一些基本數據類型:boolean、float、int、long、String等。
SharedPreferences的常用方法:
SharedPreferences本身為接口類型,並沒有提供寫入數據的能力,而是通過SharedPreferences的內部接口實現寫入數據的能力。調用edit()方法即可獲取它所對應的Editor對象。
SharedPreferences.Editor的常用方法:
示例,簡單使用SharedPreferences實現存儲,頁面僅存在兩個Button控件,此處不附布局詳情。
- public class Main extends Activity {
- Button btnWriter,btnReader;
- SharedPreferences pre;
- SharedPreferences.Editor editor;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- btnWriter=(Button)this.findViewById(R.id.button1);
- btnReader=(Button)this.findViewById(R.id.button2);
- pre=getSharedPreferences("sharedDemo", MODE_PRIVATE);//獲取到SharedPreferences,並且權限為本程序讀寫。
- editor=pre.edit();//打開當前SharedPreferences的編輯器。
- btnWriter.setOnClickListener(writer);
- btnReader.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- // 從SharedPreferences中獲取數據
- String time=pre.getString("time",null);
- int randNum=pre.getInt("random", 0);
- String result=time==null?"您暫時還未寫入數據":"寫入時間為:"+time+
- "\n上次生產的隨機數為:"+randNum;
- Toast.makeText(Main.this,result, 5000).show();
- }
- });
- }
- View.OnClickListener writer=new OnClickListener() {
- public void onClick(View v) {
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 "+"hh:mm:ss");
- editor.putString("time",sdf.format(new Date()));//向SharedPreferences中寫入數據。
- editor.putInt("random", (int)(Math.random()*100));
- editor.commit();//提交修改
- }
- };
- }
創建的文件總是保存在根目錄的data/data/<package name>/shared_prefs目錄下。可以使用File Explorer工具查看,此工具在Eclipse→windows→Show view→other,打開Show View窗口,選中File Explorer。
如圖所示,把此文件導出到PC上,可以看到xml文件中的內容為:
- <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
- <map>
- <int name="random" value="83" />
- <string name="time">2013年3月4日 12:19:38</string>
- </map>
在創建一個SharedPreferences的時候,如果需要讓別的應用程序也能訪問到本程序的SharedPreferences,則在創建的時候指定MODE_WORLD_READABLE或MODE_WORLD_WRITEABLE就可以了。在其他程序訪問的時候,只要能獲取到創建的程序的Context就可以訪問了。
具體步驟:
Context.createPackageContext(String packageName, int flags):根據包的名稱,返回此包的Context。通過flags控制安全性:可選值:CONTEXT_INCLUDE_CODE 或 CONTEXT_IGNORE_SECURITY(常用).
實際上,開發者完全可以使用IO流的方式訪問xml文件,但是此方法過於繁瑣,沒有直接使用SharedPreferences來的簡潔明了。
在使用eclipse進行安卓java的編程的時候,有時候我們會遇到這樣的問題:那就是無故彈出aapt.exe停止工作的提示,雖然程序不會崩潰,但是這個提示經常彈出
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
相信對於手機的時間日期設置大家一定都不陌生吧,今天舉一個關於時間日期設置的示例,其中有些許不完善之處,例如如何使設置的時間日期和手機系統同步等。感興趣的讀者可以根
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我