2012-07-30 4 views
1
거짓

에 가서 메신저이CheckboxPreference은 선택을 취소 또는 내가 현재 안드로이드 보안 응용 프로그램을하고있는 중이 야

활동을 수행하여 체크 박스를 체크 해제하려고, 그래서 메신저는 특정 조건 후 CheckboxPreferences가되었습니다 취소하려고하지 :

  SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE); 
      SharedPreferences.Editor ed = sp.edit(); 
      ed.putBoolean("isPhysicalTheftEnabled", false); 
      ed.commit(); 

preferences.xml로

<CheckBoxPreference 
      android:id="@+id/isPhysicalTheftEnabled" 
      android:key="isPhysicalTheftEnabled" 
      android:title="Enable Physical Theft Protection" 
      android:summary="Select to enable the Physical Theft Protection" 
      android:defaultValue="false"/> 
<Preference android:key="physicaltheft" android:title="Set Physical Theft Protection Password" android:dependency="isPhysicalTheftEnabled"></Preference> 

그러나 CheckBoxPreference 내가 ed.commit을 할 후에도 선택 해제하지 않는(); 그게 왜 일어날까요?

답변

0

우선 "isPhysicalTheftEnabled"라는 환경 설정 파일을 연 다음 false로 쓰십시오. 사용자가 볼 수있는 설정을 업데이트하지 않고 'isPhysicalTheftEnabled'라는 값만 같은 이름으로 파일에 저장합니다. 레이아웃을 업데이트하려면 PreferenceActivity 또는 Fragment에 예 : onPreferenceChange을 구현해야합니다.

public boolean onPreferenceChange(Preference preference, Object newValue) { 
    Toast.makeText(getApplicationContext(), "NewValue: " + newValue.toString(), Toast.LENGTH_SHORT).show();  
    return true; 
} 
+0

기본적으로 false가 아니므로 사용 가능하게하고 일부 기능을 수행 한 후에 다시 false로 설정하십시오. – dythe

+0

원하는 것은 다음과 같습니다. 누군가가 나중에 다시 시작한 후 파일에서 레이아웃으로 설정을 복원 하시겠습니까? – meeDamian

+0

아니요, 특정 기능이 실행 된 후 CheckboxPreference를 false로 선택하고 싶습니다. – dythe

0

당신은 사용해야

 SharedPreferences sp = getDefaultSharedPreferences(this); 

또는

 SharedPreferences sp = getDefaultSharedPreferences(getActivity()); 
0

당신은 다음과 같이 수행 할 수 있습니다

: 위의 값을 얻으려면

cbxxx.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, 
        boolean isChecked) { 
       Editor edit = PreferenceManager.getDefaultSharedPreferences(
         youractivity.this).edit(); 
       if (isChecked) { 
        edit.putBoolean("isPhysicalTheftEnabled", true); 
       } else { 
        edit.putBoolean("isPhysicalTheftEnabled", false); 
       } 
       edit.commit(); 
      } 
     }); 

SharedPreferences prefs = preferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
if(prefs.getBoolean("isPhysicalTheftEnabled", false)){ 
}