2012-02-11 70 views
2

我是android新手。我對sharedPreference有一點點想法。有些教程說要在xml文件中添加首選項,但我需要動態添加首選項。所以我從java類(我的設置頁面)做到了。如何從android中的其他類獲取PreferenceActivity的SharedPreferences?

PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this); 
CheckBoxPreference checkboxPref = new CheckBoxPreference(this); 
     checkboxPref.setKey("1"); 
     checkboxPref.setTitle("SomeRandomStuff"); 
     root.addPreference(checkboxPref); 

現在,我需要從該設置頁面獲取所有選中複選框的標題(true),以顯示選擇了哪個選項。

我該怎麼做? 謝謝。

回答

1

您可以使用常規復選框和sharedPreferences。只需添加它的狀態,這樣

// global variables 
SharedPreferences data; 
public static String filename = "prefs"; 

// setup the SharedPreferences in onCreate() 
data = getSharedPreferences(filename, 0); 

// set the SharedPreference based on checkbox state 
@Override 
public void onCheckedChanged(CompoundButton arg0, boolean arg1) { 
    switch (arg0) { 
    case R.id.checkBox1: 
     boolean checked = checkBox1.isChecked(); 
     SharedPreferences.Editor e = dataAddHS.edit(); 
     e.putBoolean("preferenceName", checked); 
     e.commit(); 
    break; 
    } 

那麼當你需要拉偏好狀態,只是做

boolean checked = data.getBoolean("preferenceName", false); 

那麼你可以使用一個彷彿看到了聲明,如果檢查是真還是假,等

+0

尚未在任何文件中保存偏好設置。剛剛在類中聲明(它擴展了PreferenceActivity)。我應該將它們保存在任何文件中嗎? – asish 2012-02-13 05:41:34

0

從您所說的話,聽起來您所需要的只是您將要使用的偏好的默認值。具體而言,您可能需要使用一堆複選框。當你閱讀它們時,你可以使用getBoolean方法來獲取它們的值。

請注意,getBoolean方法需要第二個參數,它是要返回的默認值。

這意味着您不必動態設置首選項。您使用getBoolean來讀取首選項,如果首選項尚未由用戶設置,則會返回您指定的默認值。

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
sp.getBoolean("whether_user_wants_setting1", false); 
相關問題