선호 속성 android : dependency의 반대를 수행하는 방법은 무엇입니까?
정확히 반대되는 XML 속성이 android:dependency
있습니까?
다른 것이 선택되지 않았을 때 종속 기본 설정을 활성화하고 선택하면 비활성화하기를 바랍니다.
편집 : 아마도 문제가 아닐 android:dependency
수도 있습니다. xml 속성을 추가하여 해당 환경 설정에 대한 기본값을 비활성화 한 다음 android:dependency
원하는대로 반대 방향으로 전환 할 수 있습니다.
다시 편집 : android:enabled="false"
기본 설정 에서 설정 을 시도했지만 원하는대로 비활성화했지만 다른 기본 설정에 의존하더라도 내가 원하는대로 활성화하지 않았습니다.
실제로 내 스스로 발견했으며 동일한 문제가있을 수있는 모든 사람을 돕기 위해 여기에 게시 할 것이라고 생각했습니다.
android:disableDependentsState="true"
그것을 통제 선호도에 넣으십시오.
Dmytro Zarezenko는 의존하는 기본 설정이 참인 경우 일부 종속성을 활성화하고 해당 기본 설정이 거짓 인 경우 일부를 활성화하려면 어떻게해야하는지 물었습니다.
위에 설명 된 방법을 사용하여 한 유형의 모든 종속 기본 설정 (더 큰 숫자를 가짐)을 설정합니다. 그런 다음 (OnSharedPreferenceChangeListener를 구현하는 클래스와 함께) Preference Activity 및 / 또는 Preference Fragment에 다음과 같은 코드가 있습니다.
@Override
public void onResume()
{
super.onResume();
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause()
{
super.onPause();
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
if (key.equals("pref_that_they_depend-upon")
{
// Iterate over the preferences that need to be enabled or disabled,
// lets say there is just one called the_awkward_one.
Preference preference = findPreference("the_awkward_one");
// Or preference.setEnabled(! sharedPreferences.getBoolean(("pref_that_they_depend-upon", defaultValue));
preference.setEnabled(sharedPreferences.getBoolean(("pref_that_they_depend-upon", defaultValue));
}
}
이것은 XML이 아닌 코드에서이 작업을 수행하는 코드 샘플입니다.
String eitherKey = "either";
String orKey = "or";
CheckBoxPreference either = new CheckBoxPreference(this);
either.setKey(eitherKey);
either.setTitle("Either");
either.setSummary("It is either one or");
either.setDefaultValue(false);
either.setDisableDependentsState(true);
inlinePrefCat.addPreference(either);
try
{
//Crossfade Time
CheckBoxPreference or = new CheckBoxPreference(this);
or.setKey(orKey);
or.setTitle("Or");
or.setSummary("the other");
inlinePrefCat.addPreference(or);
or.setDependency(eitherKey);
}
catch (Exception e)
{
}
종속 선호도의 값을 변경해야하므로 누군가가 원하는 경우 아래 코드를 게시합니다.
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if(preference.getKey().equals("key_a")) {
((CheckBoxPreference)findPreference("key_b").setChecked(false);
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
너의 ~을 만들어라 PreferenceActivity
implement
SharedPreferences.OnSharedPreferenceChangeListener
선언 PreferenceActivity
:
SharedPreferences prefs;
초기화 onCreate
:
SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(this); prefs = sPrefs;
공유 환경 설정 변경 리스너에 등록
prefs.registerOnSharedPreferenceChangeListener(this);
Steve가 말한 것과 방법 onResume
과 동일하게하십시오 onPause
.
implementation of onSharedPreferenceChanged
listener:
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.d("SettingsActivity","onSharedPreferenceChanged LISTENER FIRED");
if (key.equals(getString(R.string.key_call))) {
//if call true
if (sharedPreferences.getBoolean(getString(R.string.key_call), false)) {
Preference preference = findPreference(getString(R.string.key_record));
preference.setEnabled(false);
} else { // if call false
Preference preference = findPreference(getString(R.string.key_record));
preference.setEnabled(true);
}
}
if (key.equals(getString(R.string.key_record))) {
//if record true
if (sharedPreferences.getBoolean(getString(R.string.key_record), false)) {
Preference preference = findPreference(getString(R.string.key_call));
preference.setEnabled(false);
} else { // if record false
Preference preference = findPreference(getString(R.string.key_call));
preference.setEnabled(true);
}
}
}
In this case, I have 2 mutually exclusive Preferences in PreferenceActivity
. Call and Record. When both are unchecked, both can be checked, but as user checks one of them, the other becomes disabled (greyed out). As user unchecks the checked preference, the user can check the other one.
On both of them other preferences can depend and that can be worked out with android:dependancy
attribute in XML file.
'programing tip' 카테고리의 다른 글
PHP에서 정수 (intcmp)에 해당하는 strcmp (0) | 2020.11.27 |
---|---|
mysql로드 데이터 infile이 파일 Errcode : 2의 상태를 가져올 수 없습니다. (0) | 2020.11.27 |
자바 스크립트 변수 값을 입력 유형 숨겨진 값으로 전달 (0) | 2020.11.27 |
Swift에서 지연 초기화 된 변수를 다시 초기화합니다. (0) | 2020.11.27 |
Swift : 튜플을 사용하는 단일 스위치 케이스에서 여러 간격 (0) | 2020.11.27 |