Android 환경 설정 키를 저장할 위치
기본 설정 활동을 만들 때 모든 기본 설정을 xml 파일에 정의합니다. 모든 환경 설정에는이 xml에 정의 된 키가 있습니다. 그러나 환경 설정에 액세스하면 다음과 같이 작성합니다.
SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean foo_value = appPreferences.getBoolean("foo_key_defined_in_xml", false);
하드 코딩 된 방식으로 "foo_key_defined_in_xml"참조를 피할 수있는 방법이 있습니까? R 스타일로 참조 할 가능성이있을 수 있습니다 (문자열을 참조하지 않음)?
키를 strings.xml 에 저장 하고 다른 모든 값과 마찬가지로 preferences.xml 에서 참조 할 수 있음을 발견했습니다 android:key="@string/preference_enable"
.
코드에서 입력하여 키를 참조 할 수 있습니다. getString(R.string.preference_enable)
<xliff:g>
태그를 사용하여 번역되지 않도록 문자열을 표시 할 수 있습니다 . 현지화 체크리스트 보기
<string name="preference_enable"><xliff:g id="preference_key">enable</xliff:g></string>
"res / values"에 "keys.xml"파일을 사용할 수 있지만 다음과 같이 넣어야합니다. 이렇게하면 여러 언어를 사용할 때 문제가 발생하지 않습니다.
<resources
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingTranslation">
<string name="key1">key1</string>
<string name="key2">key2</string>
...
</resources>
그런 다음 xml의 일반 문자열처럼 참조 할 수 있습니다.
....
android:key="@string/key1"
....
또는 예를 들어 자바 코드에서 :
SwitchPreference Pref1= (SwitchPreference) getPreferenceScreen().findPreference(getString(R.string.key1));
시도해보십시오 getString(R.string.key_defined_in_xml)
.
내가 아는 한 기본 설정 키를 참조하는 더 좋은 방법은 없습니다 (정적 최종 문자열을 사용하여 클래스에 문자열을 저장하는 것 제외).
SDK 문서에 제공된 예제 는 예제에서 제공 한 것과 동일합니다.
헬퍼 클래스를 사용하여 getString ()을 숨기는 것은 어떻습니까? 각 활동 또는 서비스에서 헬퍼를 한 번 인스턴스화하십시오. 예를 들면 :
class Pref {
final String smsEnable_pref;
final String interval_pref;
final String sendTo_pref;
final String customTemplate_pref;
final String webUrl_pref;
Pref(Resources res) {
smsEnable_pref = res.getString(R.string.smsEnable_pref);
interval_pref = res.getString(R.string.interval_pref);
sendTo_pref = res.getString(R.string.sendTo_pref);
customTemplate_pref = res.getString(R.string.customTemplate_pref);
webUrl_pref = res.getString(R.string.webUrl_pref);
}
}
strings.xml에서 키를 번역 할 수 없음으로 표시합니다.
<string name="screw_spacing_key" translatable="false">Screw spacing</string>
<string name="screw_spacing_title">Screw spacing</string>
<string name="screw_spacing_summary">Set screw spacing</string>
용법:
<EditTextPreference
android:key="@string/screw_spacing_key"
android:title="@string/screw_spacing_title"
android:summary="@string/screw_spacing_summary"/>
참조 : 번역 할 수없는 행 구성
ReferenceURL : https://stackoverflow.com/questions/2857121/where-to-store-android-preference-keys
'development' 카테고리의 다른 글
'ref'속성의 실제 목적은 무엇입니까? (0) | 2020.12.30 |
---|---|
git : glob 패턴과 일치하는 디렉토리 하위 트리의 모든 파일을 재귀 적으로 추가하려면 어떻게해야합니까? (0) | 2020.12.30 |
키별로 정렬 된 사전의 키 / 값 쌍 반복 (0) | 2020.12.30 |
time ()은 좋은 소금입니까? (0) | 2020.12.30 |
MVVM 모델에서 모델은 INotifyPropertyChanged 인터페이스를 구현해야합니까? (0) | 2020.12.30 |