2012-11-08 2 views
-1

getDefaultSharedPreferences 대신 context.getSharedPreference를 사용하고 있습니다. 수단 :onSharedPreferenceChanged getDefaultSharedPreferences를 사용하지 않고

SharedPreferences checkboxSetting = context.getSharedPreferences(
             "myPreferenceDB", Context.MODE_PRIVATE); 
boolean flag = checkboxSetting.getBoolean("checkboxKey",true); 

그리고 preference.xml :

<CheckBoxPreference 
     android:key="checkBoxPrefff" 
     android:title="@string/title" 
     android:defaultValue="true"/> 

응용 프로그램 설정은 내가 체크 또는 체크하지의 값을 취득하려는 checkboxpreference 있습니다.

이 방법이 유용할까요?

@Override 
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 
                     String key) { 
    if (key.equalsIgnoreCase("checkBoxPrefff")) { 
     sharedPreferences.getBoolean(key,true); 
    } 
} 

sharedPreferences는 기본 데이터베이스 (..._ preference.xml) 또는 정의 된 데이터베이스 ("myPreferenceDB")를 사용합니까? 키가 "checkboxKey"또는 null입니까?

내가

SharedPreferences temp = context.getSharedPreferences(
             "myPreferenceDB", Context.MODE_PRIVATE); 
boolean flag = temp.getBoolean("checkboxKey",true); 

잘못이고 (사실) defValue을 돌아 오기 같은 값을 얻을 할 때 때문입니다. 하지만 같은 사용하면

SharedPreferences temp = PreferenceManager.getDefaultSharedPreferences(context); 
boolean flag = temp.getBoolean("checkboxKey",true); 

그것은 작동합니다.

+0

"sharedPreferences는 기본 데이터베이스 (... _ preference.xml) 또는 정의 된 데이터베이스 ("myPreferenceDB ")"를 사용합니까? 이는 function_에 무슨 뜻이 있는지에 달려 있습니다 ._ 또한 열쇠'checkboxKey' 또는'checkBoxPrefff'도 있습니다. 또한 '같음'이라니? _equalsIgnoreCase_? –

답변

1

다시 한번 sharedPref는 DB가 아니라 XML 파일입니다. 다음 코드를 찾고 싶습니다.

+0

고마워,하지만 sharedPreferences는 DB를, 전형적인 방식으로, getPreferenceManager가 사용되지 않습니다. 대신에 뭐야? –

+0

2 - setSharedPreferencesName을 사용하고 기본 이름을 변경하면 수동으로 값을 추가 할 필요가 없습니다 (예 : myPrefIns.edit(). putString ("myKey", valueeee) .commit())? –

+1

getPreferenceManager()는 API11에서 사용되지 않습니다. 단순히 화면과 같은 설정을 원하고 공유 된 값으로 저장하고 싶다면 수동으로 저장하지 않아도됩니다. 또한 http://developer.android.com/reference/android/preference/PreferenceActivity.html을 참조하십시오. 다른 활동/서비스 등과 같이 어디에서나 값을 저장하려면 수동으로해야합니다. – Atrix1987

1

SharedPreferenceChangedListener를 사용중인 공유 된 기본 설정에 등록 할 수 있습니다. 기본 공유 환경 설정 일 필요는 없습니다.

getApplicationContext().getSharedPreferences("myPreferenceDB", 0).registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() { 

     @Override 
     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 
       String key) { 
      // TODO Auto-generated method stub 

     } 
    }); 
+0

고마워,하지만 내 관련된 대답이 아니야! sharedPreferences가 기본 데이터베이스 또는 정의 된 데이터베이스를 사용하는지 알고 싶습니까? –

+0

onPreferenceChange와 onSharedPreferenceChanged의 차이점은 무엇입니까? –

+0

sharedPref는/data/data//files 디렉토리에 저장되는 xml 파일입니다. 당신이 무엇을 성취하려고하는지 말해 줄 수 있습니까? – Atrix1987

관련 문제