我們在設計軟體的時候,需要記錄軟體佈建的基本資料,那麼怎麼來儲存他們呢?我們可以使用SharedPreferences。 SharedPreferences是一個xml檔案,用來儲存軟體的常規設定。例如:登陸框的使用者名稱或使用者自己的設定資訊。 SharedPreferences自動儲存在data/data//shared_prefs
userInfo.xml便是我們設定的儲存的檔案。檔案名稱可以自己指定。 那麼怎麼實現呢?下面我們一步一步來說:第一步:建立SharedPreferences:android為我們提供了或的方法,這個方法在有檔案時,返回SharedPreferences對象,沒有是在建立editor 後執行Editor.commit()是建立。
-
原文:
-
Desired preferences file. If a preferences file by this name does not exist, it will be created when you retrieve an editor (SharedPreferences.edit()) and then commit changes (Editor.commit()).
代碼1:
SharedPreferences preferences = getSharedPreferences("userInfo",Activity.MODE_PRIVATE);
解釋:getSharedPreferences第一個參數userInfo為檔案名稱,得到的就是userInfo.xml,可以自己起名。
第二個參數Activity.MODE_PRIVATE,是Activity建立檔案時的許可權,這裡是私人的許可權大全:
Context.MODE_PRIVATE = 0x0000
Context.MODE_WORLD_READABLE = 0x0001
Context.MODE_WORLD_WRITEABLE = 0x0002
Context.MODE_APPEND = 0x8000
Context.MODE_PRIVATE:為預設操作模式,代表該檔案是私人資料,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原檔案的內容,如果想把新寫入的內容追加到原檔案中。可以使用Context.MODE_APPEND
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有許可權讀寫該檔案。
Context.MODE_APPEND:模式會檢查檔案是否存在,存在就往檔案追加內容,否則就建立新檔案。
MODE_WORLD_READABLE:表示當前檔案可以被其他應用讀取;MODE_WORLD_WRITEABLE:表示當前檔案可以被其他應用寫入。
如果希望檔案被其他應用讀和寫,可以傳入:
openFileOutput("leigo.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
第二步:初始化添加資料:
代碼2:
//獲得編輯器資訊,這個編輯器想一個map,它是以key-values形式存在的。SharedPreferences.Editor edit=preferences.edit(); //將值添加到編輯器中 edit.putBoolean("isSendMsg", isSendMsg.isChecked()); edit.putBoolean("isCall", isCall.isChecked()); edit.commit();//注意在沒有preferences的時候這裡進行建立。
添加完之後,我們開啟檔案可以看到儲存的值。檔案儲存體在data/data//shared_prefs下面, 如果你還不知道怎麼查看本地手機檔案請看這個android開發之-查看、編輯手機sqlite資料庫檔案-實測。
第三步:獲得SharedPreferences 中的值,顯示在手機中。
SharedPreferences preferences = getSharedPreferences(PREFERENCES_NAME,Activity.MODE_PRIVATE);//獲得兩個控制項,用以展示。 isSendMsg = (Switch) findViewById(R.id.isSendMessage); isCall = (Switch) findViewById(R.id.isCall); //將 preferences.getBoolean("isSendMsg", true)資訊取出來,賦值給控制項,getBoolean的第二個參數是,如果preferences中沒有這個值預設的設定的值。 isSendMsg.setChecked(preferences.getBoolean("isSendMsg", true)); isCall.setChecked(preferences.getBoolean("isCall", false));
好了,至此我們就學習完了怎麼使用SharedPreferences了,另外應該注意在退出程式的時候記得儲存資訊,一般在onStop()方法中使用
@Override protected void onStop() { super.onStop(); //停止的時候自動儲存資訊 SharedPreferences preferences=getSharedPreferences(PREFERENCES_NAME,Activity.MODE_PRIVATE); SharedPreferences.Editor edit=preferences.edit(); edit.putBoolean("isSendMsg", isSendMsg.isChecked()); edit.putBoolean("isCall", isCall.isChecked()); edit.commit(); }
作為一個android初學者,第一次開博,錯誤之處難免,請大家多多包含,指教。