2012-10-07 85 views
3

我試圖使用視圖類中的按鈕關閉來自應用程序的聲音。 (即:靜音) 當用戶按下盒子時,我想要代碼檢查值是否已經爲真或flase,然後使用名爲「靜音」的ID設置爲相反。我想我已經中頻部分的設置,只需從真容易改變SharedPreferences至FLASE,反之亦然......更改Java中的偏好設置中的true false

這裏是代碼框架,我測試(前):

SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
boolean cmute = getPrefs.getBoolean("mute", defValue); 
if (cmute == true){      

} 
if (cmute == false){ 

} 

我曾嘗試該解決方案的各種結果,但大多數都是這種簡單的需求,我認爲太複雜了..

這裏是我的返工後發佈的建議:

if (cmute == false){ 


        Editor editor = getPrefs.edit(); 
        editor.putBoolean("mute", true); 
        editor.commit(); 
        Editor editor2 = getPrefs.edit(); 
        editor.putBoolean("notice", true); 
        editor.commit(); 



       } 
       if (cmute == true){ 

        Editor editor = getPrefs.edit(); 
        editor.putBoolean("mute", false); 
        editor.commit(); 
        Editor editor2 = getPrefs.edit(); 
        editor.putBoolean("notice", false); 
        editor.commit(); 

       } 
+0

您應該更新您的if語句如下:如果(cmute){..}其他{..} – JoxTraex

+0

JOX - 我需要{...} thnx – Droidster

+1

@Droidster Jox意味着你可以擺脫'== true'部分;你也不需要第二個'if',只需使用'else'子句。 – poke

回答

4

這可以用0來實現接口:

用於修改SharedPreferences對象中的值的接口。所有 更改都在編輯器中是成批的,而不是直到調用commit()或應用()

這應該爲你工作拷貝回 原SharedPreferences:

SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
boolean cmute = getPrefs.getBoolean("mute", defValue); 
Editor editor = getPrefs.edit(); 
editor.putBoolean("mute", !cmute); 
editor.commit(); 
+0

下面是它是如何工作的偉大的,我試過其他,但拋出錯誤..感謝所有參與者。 =] – Droidster

0

評論在您的AFTER建議版本上:沒有必要創建editor2,您甚至不使用它,您在隨後的行中引用editor。也不需要調用兩次提交。並通過運營商不作爲!已經platzhirsch建議,你不需要用if(cmute...

Editor editor = getPrefs.edit(); 
editor.putBoolean("mute", !cmute); 
editor.putBoolean("notice", !cmute); 
editor.commit();