В общем такая, задача, у меня есть DialogFramgent в котором реализованы настройки приложения, и внизу есть кнопки, Отмена и Применить. Так вот, если пользователь ничего не изменил в настройках, диалоговое окно закрывается по нажатию на кнопку Отмена или нажатием на кнопку Назад на устройсте. Если же он изменил что-либо в настройках, и нажал кнопку Отмена в конце диалогового окна, то оно закроется, а если он нажмёт кнопку Назад на устройстве то нужно вызывать новое диалоговое окно с предложением сохранить или не сохранять. Я все реализовал, единственное, я не могу понять, как мне проверить, изменил ли он что-нибудь? Все изменения идут по SharedPreferences. Я так полагаю, что мне в onBackPressed нужно сделать условие, что если в SharedPreferences внесены изменения чтобы вызывался DialogAlert если же нет, то чтобы просто закрывались настройки. Вопрос лишь в том, какое условие я должен сделать?
Попробуйте так:
На входе в диалог сохраните ваши значения в Map<String,?> map = prefs.getAll();, затем в нужный момент сравните map.equals(prefs.getAll()). Есть сомнения, но вроде equals должен работать как надо.
Как вариант, при вызове DialogFramgent запоминайте сохраненные настройки, а при нажатии на кнопку "назад" сравнивайте текущие настройки с сохраненными. Если что-то не совпадает, то запрашивайте сохранение
Сборка персонального компьютера от Artline: умный выбор для современных пользователей