我正在用PreferenceActivity來顯示我應用程序的一些設置。我是通過xml文件設置的,所以我的onCreate(和完整的類方法)是像下邊這樣的:
public class FooActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.preference);
}
}
這些參數將自動保存到SharedPreferences中,作為用戶和他們一起起作用。為了得到SharedPreferences的一個實例,在這個activity中,將使用參數層級,為了這個activity,在同樣的包中調用getDefaultSharedPreferences(android.content.Context)
但是我怎麼樣在另外一個activity中獲得SharedPreference的名字?我只能調用在其他的activity中調用getSharedPreferences,但是我需要被PreferenceActivity使用的SharedPreference的名字。這個名字什麼或者我怎麼能夠得到它?
import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
// 然後你用
prefs.getBoolean("keystring", true);
許多應用程序可能都提供一個方法在一個特定的應用程序或者是一個activity中來捕獲用戶的參數。為了支持這個,android提供了一組簡單的api。
參數是典型的成對的名稱之。他們可以跨過一個應用程序的各種activities作為“Shared Preferences” 被存儲(注意目前它不能跨進程共享)。或者它可能是一些需要特殊存儲到一個activity中。
1.共享參數:共享參數可以被所有的組件(activities、services等等)脫離應用程序使用
2.activity處理參數:這些參數只能在activity中使用,不能被應用的其他組件使用。
共享參數:
共享參數在context類下的getSharedPreferences方法的幫助下是被托管的。參數是存儲在一個默認的文件(1)中,或者你可以指定一個文件名(2)來存儲參數。
這就是當你指定文件名稱的時候如何獲得示例
public static final String PREF_FILE_NAME= "PrefFile";
SharedPreferences preferences= getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE是操作模式的參數。它是默認的模式,而且意味著創建的文件夾只能被調用的應用程序訪問。其他兩個被支持的模式參數是MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。在MODE_WORLD_READABLE中其他的應用程序可以讀創建的文件夾但是不能修改。在MODE_WORLD_WRITEABLE中其他的應用程序也有寫創建的文件夾的權限。
下邊介紹的方法就是使用默認的模式,沒有指定文件名
SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(context);
最終,一旦你有了參數實例,這事你怎麼從參數中檢索到存儲值:
為了在參數文件SharedPreference中存儲值,必須要使用Editor對象。Editor是SharedPreference 類內嵌的接口。
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Editor還支持像用remove() 和 clear()方法從文件中刪除參數值。
Activity參數:
共享參數可以被其他應用程序組件使用。但是如果你不想和其他組件分享參數,想要有activity私有參數,你可以在activity的getPreferences() 方法的幫助下實現。getPreference 方法使用帶著activity類名字的getSharedPreferences()方法給參數文件命名。。
下邊的代碼就是獲得參數
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
The code to store values is also same as in case of shared preferences.
下邊存儲值得代碼和共享參數的情況下一樣
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference);
editor.commit();
你也可以使用其他方法,就像在數據庫中存儲activity狀態。注意android也包含了一個叫做android.preference的包。這個包定義了類來實現應用程序參數UI