Android - SharedPreferences - Настройка кода на основе значения предпочтения?

Внедрение выбранных пользователем настроек в мой код — это новое достижение для меня.
Я успешно реализовал часть настроек для кода, но мог бы воспользоваться советом.

Я решил использовать 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;
    }
}


Если кто-нибудь может дать несколько советов о том, как это сделать, я был бы очень признателен!
Заранее спасибо!

1
0
41
1

Ответы 1

Я думаю, что в этом случае лучше всего создать 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:
}

@Thiago_Neves: Спасибо за ответ! Я еще не знаком с использованием enum или с тем, какова его функция (сейчас я погуглю) - однако кажется, что в ваш пример оператор switch примерно такой же, как в мой пример (за исключением того, что без break;, и добавление части enum).. Не могли бы вы дать мне краткое объяснение того, чем ваш пример отличается от мой, и как часть enum играет роль в изменении вещей/делении их другими по сравнению с простым использованием одного оператора switch? В любом случае, разве я не добавлю свой код(ы) дела все равно?

Studio2bDesigns 09.02.2019 01:42

PS. После изучения enum, как Google, так и StackOverlow, я заметил общую тему, которая предполагает, что использование enum на самом деле является обескураженный, и вместо этого рекомендуется использовать Примитивные константы, ИЛИ, используя вместо этого аннотации TypeDef. Использованная литература:ссылка на StackOverflow и ссылка в поиске Google.. Есть мысли? или дополнительные предложения?

Studio2bDesigns 09.02.2019 01:51

Другие вопросы по теме