2012-10-07 2 views
3

보기 클래스의 버튼을 사용하여 앱의 사운드를 끄려고합니다. (예 : 음소거) 사용자가 상자를 푸시 할 때 나는 값이 이미 true인지 확인하고 코드를 지정하고 '음소거'라는 ID를 사용하여 반대 방향으로 설정합니다. 내가 시도자바의 환경 설정에서 참 거짓을 변경하십시오.

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

} 
if (cmute == false){ 

} 

: 나는 여기

이 (전) 내가 테스트하고있어 코드 프레임 워크입니다 ... 그냥 쉽게 flase하는 사실에서 변경 된 SharedPreferences 반대가 필요, 내가 IF 부분의 설정을 가지고 생각

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

문을 읽을 경우 당신은 당신을 업데이트해야 필요성을 제거합니다 경우 (cmute) {...} 다른 {...} – JoxTraex

+0

JOX - 난 {...} 필요합니다 – Droidster

+1

@Droidster Jox는 당신이'== true' 부분을 제거 할 수 있음을 의미합니다; 또한 두 번째'if'가 필요하지 않습니다. 단지'else' 절을 사용하십시오. – poke

답변

4

이 0으로 달성 될 수있다 : 솔루션에 대한 다양한 연구 결과하지만 대부분은 여기에

내 재 AFTER 게시 제안입니다 .. 내 생각이 간단한 필요 너무 복잡인터페이스 :

SharedPreferences 개체의 값을 수정하는 데 사용되는 인터페이스입니다. 편집기에서 당신이 만드는 모든 변경은 일괄 처리, 그리고 당신이

당신을 위해 일해야한다는) ((커밋) 또는 적용 호출 할 때까지 원래 된 SharedPreferences로 다시 복사됩니다

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

다음은 작동 방식입니다. 훌륭하지만, 시도했지만 오류가 발생했습니다 .. particpated 누구에게나 감사드립니다. =] – Droidster

0

댓글 AFTER 제안 버전 : editor2을 만들 필요가 없습니다. 사용하지 않더라도, 후속 라인에서 editor을 참조하고 있습니다. 또한 커밋을 두 번 호출 할 필요가 없습니다. 그리고 이미 제안 platzhirsch로하지 운영자 !를 사용하여, 당신은 if(cmute...

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