Кнопка переопределения назад с всплывающим сообщением - PullRequest
0 голосов
/ 11 февраля 2020

Я использую компонент навигации для навигации между моими фрагментами. У меня есть 1 фрагмент, где пользователь может редактировать некоторые данные. Как только что-то меняется, я устанавливаю флаг «сохранено = ложь», и после того, как пользователь нажимает кнопку «сохранить», флаг переходит к «сохранено = истина». Теперь, что я хочу сделать, это добавить обычное всплывающее сообщение (Вы хотите сохранить изменения? Да Нет Отмена), когда пользователь нажал кнопку «Назад», но не сохранил изменения. Также я хочу добавить его к обеим кнопкам:

Эта

enter image description here

И эта один

enter image description here

Я смотрел на это: https://developer.android.com/guide/navigation/navigation-custom-back, и это работает только для (основной) кнопки назад, но не для одного на панели инструментов. Когда мне нужно go к предыдущему фрагменту в коде, я использую:

findNavController().popBackStack()

Так нужно ли мне как-то переопределить эту функцию или добавить обратный вызов? Или, может быть, есть какой-то другой (лучший) способ сделать это?

1 Ответ

0 голосов
/ 11 февраля 2020

В следующий раз, пожалуйста, поделитесь кодом .

У меня была такая же проблема, и это мое решение. Вам нужно переопределить onOptionsItemSelected в вашей активности / фрагменте и проверить, когда нажата стрелка "назад".

Код

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home: 
        // put here what you would like to happen when u click on it
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

РЕДАКТИРОВАТЬ : Я просто заметил, что вы используете Kotlin, поэтому я добавил kotlin пример:

override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.getItemId()){
    android.R.id.home -> {
        // put your code here
        return true
    }
}
return super.onOptionsItemSelected(item)

}

Не стесняйтесь спрашивать:)

...