Я работаю над настройками активности моей игры.У меня есть раздел уведомлений, где пользователь может включить уведомления и включить вибрацию.
Я хочу отключить вибрацию SwitchPreference, если уведомления SwitchPreference отключены.Я попытался android:dependancy
, но все, что делает, это размытие SwitchPreference вместо отключения вибрации.
Это то, что находится внутри pref_main.xml
<PreferenceCategory android:title="@string/pref_title_notifications">
<SwitchPreference
android:defaultValue="true"
android:key="@string/enable_notifications"
android:title="@string/title_enable_notifications" />
<RingtonePreference
android:defaultValue="content://settings/system/notification_sound"
android:dependency="enable_notifications"
android:key="@string/key_ringtone"
android:ringtoneType="notification"
android:summary="@string/default_ringtone"
android:title="@string/title_ringtone" />
<SwitchPreference
android:defaultValue="true"
android:key="@string/key_vibrate"
android:title="@string/title_vibrate" />
</PreferenceCategory>
У меня есть активность настроек и appcompatpreferenceacctivityфайл.Эти три файла управляют настройками.Что мне делать в каждом файле, чтобы отключить вибрацию при отключенных уведомлениях?
Редактировать: вот код для MainPreferenceFragment для действия настройки
public static class MainPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_main);
// EditText Listeners
bindPreferenceSummaryToValue(findPreference(getString(R.string.key_full_name)));
bindPreferenceSummaryToValue(findPreference(getString(R.string.key_username)));
bindPreferenceSummaryToValue(findPreference(getString(R.string.key_birthday)));
bindPreferenceSummaryToValue(findPreference(getString(R.string.key_email)));
// notification preference change listener
bindPreferenceSummaryToValue(findPreference(getString(R.string.key_ringtone)));
private SwitchPreferenceCompat enableNotifications;
private SwitchPreferenceCompat keyRingtone;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
enableNotifications = findPreference("enable_notifications");
keyRingtone = findPreference("key_ringtone");
enableNotifications.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
keyRingtone.setChecked(((boolean) newValue));
return true;
}
});
}
}
}