Кнопка «Назад» на клавиатуре действует как клавиша «Назад» телефона, как их отличить - PullRequest
0 голосов
/ 07 октября 2018

Итак, я пишу свое первое небольшое приложение на Android Xamarin.Я заметил, что мое приложение иногда внезапно закрывается, я обнаружил, что оно закрывается, когда я держу кнопку «Назад» на клавиатуре, чтобы удалить текст в текстовом поле.

У меня есть этот код, который должен дважды нажать кнопку «Назад»чтобы выйти из приложения:

bool doubleBackToExitPressedOnce = false;
public override bool OnKeyDown([GeneratedEnum] Keycode keyCode, KeyEvent e)
{
    if (myWebView != null)
    {
        if (keyCode == Keycode.Back && myWebView.CanGoBack())
        {
            myWebView.GoBack();
            return true;
        }
        else
        {
            if (doubleBackToExitPressedOnce)
            {
                base.OnBackPressed();
                Java.Lang.JavaSystem.Exit(0);
                return false;
            }

            doubleBackToExitPressedOnce = true;
            Toast.MakeText(this, "Press back again to exit app", ToastLength.Short).Show();

            new Handler().PostDelayed(() => {
                doubleBackToExitPressedOnce = false;
            }, 1000);
        }
    }

    return false;
}

Но, по-видимому, он не реагирует на кнопку «назад» телефона, но также на «назад» на клавиатуре.

Есть идеи, как это исправить?

1 Ответ

0 голосов
/ 07 октября 2018

Пока что я решил эту проблему, добавив следующий код в первое if выражение

if (myWebView != null && e.Flags != (Android.Views.KeyEventFlags.KeepTouchMode | Android.Views.KeyEventFlags.SoftKeyboard))

Я все еще задаюсь вопросом, является ли это правильным способом решения моей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...