Android: переопределение кнопки «Назад» не работает в библиотеке. - PullRequest
0 голосов
/ 17 июня 2020

У меня есть действие с переопределением методов кнопки возврата

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    Log.d(TAG, "onOptionsItemSelected");
    if (item.getItemId() == android.R.id.home)
        onBackPressed();
    Log.d(TAG, "onOptionsItemSelected: if executed");
    return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {
    closeDialog();
}

Он отлично работает, чтобы отображать диалоговое окно с предупреждением для пользователя при нажатии кнопки возврата с оборудования. Когда пользователь дает разрешение, действие завершается. Но когда пользователь щелкает стрелку назад на панели инструментов, отображается диалоговое окно, но вызываются методы действий onPause (), onStop (), и происходит утечка окна, поскольку отображается диалоговое окно предупреждений и действие прекращается.

Как решить эту проблему?

ПРИМЕЧАНИЕ. Этого не происходит, если мы не указываем родительскую активность в файле манифеста!

1 Ответ

1 голос
/ 17 июня 2020

Предполагается, что вы должны вернуть true из onOptionsItemSelected, когда вы обрабатываете пресс (внутри вашего if case).

Прямо сейчас вы звоните на super.onOptionsItemSelected(item) безоговорочно, что срабатывает Финиш активности sh на заднем прессе.

...