Внедрение выбранных пользователем настроек в мой код — это новое достижение для меня.
Я успешно реализовал часть настроек для кода, но мог бы воспользоваться советом.
Я решил использовать Preferences-API и PreferenceFragment для своих App настроек.
На данный момент мой SettingsActivity настроен, работает и корректно обновляет новые значения.
Однако теперь, когда я реализую значения предпочтений в коде, требуется некоторая помощь.
Есть 2Preferences, которые я изо всех сил пытаюсь внедрить в код.
Однако пока я расскажу только о 1 из них. Подробности таковы :
Предпочтение = Тип уведомления
(ключ = pref_notificationType) - (постоянная строка = PREF_NOTIFICATION_TYPE)
Ценности :
Звук и вибрация
Только звук
Только вибрация
Тихий
( ЗАМЕТКА : Это точные имена значений для этого Preference ).
Я хочу сделать что-то в этом духе, только правильно и эффективно:
public void notificationType() {
SharedPreferences getPrefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
final String notifType =
getPrefs.getString(PREF_NOTIFICATION_TYPE, "Sound and Vibration");
switch (notifType) {
case ("Sound and Vibration"):
// Create Notification with SOUND (AND) VIBRATION
break;
case ("Sound only"):
// Create Notification with SOUND (only)
break;
case ("Vibrate only"):
// Create Notification with VIBRATION (only)
break;
case ("Silent"):
// Create Notification SILENTLY
break;
default:
// The default is "Sound and Vibration"
break;
}
}
Если кто-нибудь может дать несколько советов о том, как это сделать, я был бы очень признателен!
Заранее спасибо!
Я думаю, что в этом случае лучше всего создать Enum и сравнить его в переключателе.
enum NotificationType {
SOUND_AND_VIBRATE, SOUND_ONLY, VIBRATE_ONLY, SILENT
}
//and
switch (NotificationType) {
case SOUND_AND_VIBRATE:
case SOUND_ONLY:
case VIBRATE_ONLY:
case SILENT:
}
PS. После изучения enum, как Google, так и StackOverlow, я заметил общую тему, которая предполагает, что использование enum на самом деле является обескураженный, и вместо этого рекомендуется использовать Примитивные константы, ИЛИ, используя вместо этого аннотации TypeDef. Использованная литература:ссылка на StackOverflow и ссылка в поиске Google.. Есть мысли? или дополнительные предложения?
@Thiago_Neves: Спасибо за ответ! Я еще не знаком с использованием
enumили с тем, какова его функция (сейчас я погуглю) - однако кажется, что в ваш пример операторswitchпримерно такой же, как в мой пример (за исключением того, что безbreak;, и добавление частиenum).. Не могли бы вы дать мне краткое объяснение того, чем ваш пример отличается от мой, и как частьenumиграет роль в изменении вещей/делении их другими по сравнению с простым использованием одного оператораswitch? В любом случае, разве я не добавлю свой код(ы) дела все равно?