SharedPreferences에는 getAll 메소드가 있지만 일부 키가 존재하더라도 항목을 반환하지 않습니다.
PreferenceManager.getDefaultSharedPreferences(this).contains("addNewAddress");
true를 반환
Map<String, ?> keys=PreferenceManager.getDefaultSharedPreferences(this).getAll();
빈지도를 반환
뭐가 잘못 되었 니? 모든 공유 기본 설정 목록을 얻는 방법은 무엇입니까?
답변
당신이 할 수있는 것은 getAll()
방법을 사용 SharedPreferences
하고 모든 값을 가져 와서 Map<String,?>
쉽게 반복 할 수 있습니다.
Map<String,?> keys = prefs.getAll();
for(Map.Entry<String,?> entry : keys.entrySet()){
Log.d("map values",entry.getKey() + ": " +
entry.getValue().toString());
}
자세한 내용은 구현 을 확인할 수 있습니다 .PrefUtil.java's
dump()
답변
나는 질문이 이유와 더 관련이 있다고 생각합니다
PreferenceManager.getDefaultSharedPreferences(this).getAll()
표준 Java 맵을 반복하는 방법보다 비어 있거나 모순되는 맵을 반환합니다. 안드로이드 문서는 정말 여기에서 무슨 일이 일어나고 있는지에 대한 명확한 결정이 아니라 기본적으로는 것 같아 지금까지 첫 번째 호출 에
PreferenceManager.setDefaultValues(this, R.xml.preferences,false)
-앱을 시작할 때 환경 설정을 초기화하기 위해 호출해야하는 것입니다-나중에 xml 환경 설정 파일에 대한 변경 사항이 일관되지 않게 처리되도록하는 일종의 캐시 된 환경 설정을 생성합니다. 즉, 불일치가 발생합니다. 귀하의 질문에 설명되어 있습니다.
이 “캐시 된 엔티티”를 재설정하려면 다음 단계를 따르십시오 (위 링크에서 생성 할 수 있음).
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.edit().clear();
PreferenceManager.setDefaultValues(this, R.xml.preferences, true);
답변
누구나 KOTLIN에서 공유 환경 설정을 반복하려는 경우
sharedPreferences?.all?.forEach {
//access key using it.key & value using it.value
Log.d("Preferences values",it.key() + ": " + it.value()
}