2012-09-30 57 views
0

如何更新我的PreferenceActivity?更新PreferenceActivity上的複選框

我在SharedPreferences中保存了活動中CheckBox的值(在這種情況下,爲true)。即使我去其他活動,我可以看到這是真的。但是,當我進入我的PreferenceActivity時,複選框未被選中,它是錯誤的。所以我想知道的是,如何在我的PreferenceActivity中加載我的SharedPreferences,以及如何更新CheckBox(加載值,如果是true,則將CheckBox設置爲選中狀態)。

我應該這樣加載嗎?

Shared Preferences SP = getSharedPreferences(DATA, MODE_PRIVATE); 
fw = SP.getBoolean("fw", false); 

但是,如何設置CheckBox true或false,因爲我不能使用findViewById?

編輯:

活動,我保存複選框值:

Editor edit = SP.edit(); 
edit.putBoolean("fw", fwbt.isChecked()); 
edit.commit(); 

我優先考慮的XML文件:

<CheckBoxPreference 
    android:title="CheckBox FW" 
    android:key="fw" 
    android:summary="Estado do CheckBox" /> 

我的偏好活動:

public class Prefs extends PreferenceActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.prefs); 
     //Don't know what to do here... 
    } 
} 

回答

0

我找不到解決方案,所以放棄了。我剛剛創建了一個自定義首選項,它更容易。

無論如何,我會在稍後繼續尋找解決方案。

1

您需要創造一個Editor修改SharedPreferences

getSharedPreferences(DATA, MODE_PRIVATE).edit().putBoolean("fw", true).commit(); 

更新

您需要定義在活動中使用SharedPreferences了。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getPreferenceManager().setSharedPreferencesName(DATA); 
    addPreferencesFromResource(R.xml.prefs); 
} 
+0

它沒有工作。我想我可能已經表現得很糟糕。我在SharedPreferences中保存了一個活動中CheckBox的值(在這種情況下,爲true)。即使我去其他活動,我可以看到這是真的。但是,當我進入我的PreferenceActivity時,複選框未被選中,它是錯誤的。所以我想知道的是,如何在我的PreferenceActivity中加載我的SharedPreferences,以及如何更新CheckBox(加載值,如果是true,則將CheckBox設置爲選中狀態)。 –

+0

您是否正在使用'addPreferencesFromResource(R.xml.pref_classic_appearance)'加載包含'PreferenceScreen'的XML文件,然後'CheckBoxPreference'的狀態與存儲到'​​DATA'的狀態不匹配?您是否在該配置文件中爲「CheckBoxPreference」定義了鍵「fw」? – Rayne

+0

我用我的部分代碼編輯了我的帖子。這是相同的關鍵,​​我叫'addPreferencesFromResource(R.xml.mypreferencexmlfile);' –

0

我沒有用之前PreferenceActivity但我認爲你只需要實現它像任何其他活動。

public class PreferenceWithHeaders extends PreferenceActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     CheckBox cb = (CheckBox)this.findViewById(IDOFBUTTON); 
     ... do whatever on checkbox 

    } 
+0

問題是,我不能給CheckBoxPreference一個ID。 –

0

你搞砸了 - PreferenceActivity從SharedPreferences中讀/寫。所以在你的活動中做

Shared Preferences SP = PreferenceManager.getDefaultSharedPreferences(this); 
Editor edit = SP.edit(); 
edit.putBoolean("fw", fwbt.isChecked()); 
edit.commit(); 

和改變應該在你的PreferenceActivity。

另外:

SP.edit().putBoolean("fw", fwbt.isChecked()).commit(); 

會做