선호 속성 안드로이드: 의존성의 반대를 하는 방법?
다음과 같은 정반대의 XML 속성이 XML 속성이 있습니까?android:dependency
?
다른 것을 선택하지 않았을 때 종속 환경설정을 활성화하고 선택했을 때 비활성화했으면 하는 것.
편집: 문제가 에 있지 않을 수 있습니다.android:dependency
기본 설정을 비활성화한 다음 추가할 수 있는 xml 속성이 있을 수 있습니다.android:dependency
내가 원하는 것과 반대로 토글할 것입니다.
다시 편집:세팅을 해봤습니다.android:enabled="false"
선호도에서는 내가 원하는 것처럼 비활성화되지만 다른 선호도에 의존하더라도 내가 바라던 것처럼 활성화되지 않았습니다.
사실은 제가 직접 찾았고 같은 문제를 가진 사람들을 돕기 위해 여기에 게시해야겠다고 생각했습니다.
android:disableDependentsState="true"
그것을 통제 선호도에 넣습니다.
Dmytro Zarezenko는 의존 관계에 있는 선호도가 참일 때 일부 의존 관계를 활성화하고 일부 의존 관계가 거짓일 때 활성화하려면 어떻게 해야 하는지 물었습니다.
위에서 설명한 방법을 사용하여 한 유형의 종속적인 모든 기본 설정을 설정할 수 있습니다.그러면 (클래스에 OnSharedPreferenceChangeListener가 구현된 경우) Preferences Activity 및/또는 Preferences 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);
스티브의 말대로 하다onResume
그리고.onPause
방법들.
실시.onSharedPreferenceChanged
청취자:
@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);
}
}
}
이 경우, 저는 2개의 상호 배타적 선호를 가지고 있습니다.PreferenceActivity
. 통화하고 녹음합니다.둘 다 선택 해제되어 있으면 둘 다 선택할 수 있지만, 사용자가 둘 중 하나를 선택하면 다른 하나는 비활성화(회색 표시)됩니다.선택한 환경설정을 선택 취소하면, 사용자는 다른 환경설정을 확인할 수 있습니다.
두 가지 모두에 따라 다른 선호도가 달라질 수 있으며, 이를 통해 해결할 수 있습니다.android:dependancy
XML 파일의 속성입니다.
언급URL : https://stackoverflow.com/questions/3591901/how-to-do-opposite-of-of-preference-attribute-androiddependency
'programing' 카테고리의 다른 글
.NET과 함께 CouchDB 사용 (0) | 2023.10.08 |
---|---|
woocommerce에 페이지당 제품 드롭다운 추가 (0) | 2023.10.08 |
웹 응용 프로그램(스프링 보안을 통해)에 로그인한 모든 사용자의 목록을 확인하려면 어떻게 해야 합니까? (0) | 2023.10.03 |
AngularJS UI 라우터:중첩된 명명된 뷰를 구성하는 방법은 무엇입니까? (0) | 2023.10.03 |
스크립트 실행을 무제한으로 설정 (0) | 2023.10.03 |