Я делаю preferenceScreen с этим XML-кодом:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:orderingFromXml="true">
<PreferenceCategory
android:key="pref1"
android:title="Search All">
<CheckBoxPreference
android:key="check_all"
android:title="Check"/>
</PreferenceCategory>
<PreferenceCategory
android:title="Specific Search"
android:key="pref2">
<ListPreference
android:title="Food"
android:key="opcion1"
android:dialogTitle="Escoge Categoria"
android:entryValues="@array/codigoCateg"
android:entries="@array/categorias"
android:negativeButtonText="Cancel"/>
<ListPreference android:title="Dificultad"/>
<ListPreference android:title="Otras"/>
</PreferenceCategory>
Java-код:
public class OpcionesBusqueda extends PreferenceActivity {
boolean CheckBoxPreference;
private PreferenceCategory Pref2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.video_search);
Pref2=(PreferenceCategory)findPreference("pref2");
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
CheckBoxPreference = prefs.getBoolean("check_all", true);
if(CheckBoxPreference==true){
Pref2.setEnabled(false);
}
else{
Pref2.setEnabled(true);
}
}
}
Что я хотел бы сделать, если флажок установлен, то pref2 (preferencecategory2) должен быть отключен, а если он не отмечен, он должен быть включен. Есть что-то, что я делаю не так, или, может быть, больше, чем один.
Спасибо.
Я последовал ответу Алекса и с некоторыми изменениями прибыл в код желания, вот исправленный код:
public class OpcionesBusqueda extends PreferenceActivity {
private CheckBoxPreference Check;
private PreferenceCategory Pref2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.video_search);
Check=(CheckBoxPreference)findPreference("check_all");
Pref2=(PreferenceCategory)findPreference("pref2");
Check.setOnPreferenceChangeListener(new CheckBoxPreference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(final Preference preference, final Object newValue) {
Pref2.setEnabled((Boolean)newValue == false);
return true;
}
});
}