Кнопка «Назад» на экране входа - PullRequest
0 голосов
/ 31 октября 2018

Я слежу за курсом Firebase в выходные (Android) от Udacity на Android Studio. На Урок 36. Обработка отмененного входа * С субботы показано, как исправить ошибку, связанную с нажатием кнопки «Назад», и приложение продолжает отображать экран входа в бесконечном цикле. Это код, который предположительно решает проблему, функция onActivityResult:

@Override  // Added manually.
    public void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == RC_SIGN_IN){
            if(resultCode == RESULT_OK) {
                Toast.makeText(this, "Signed in!", Toast.LENGTH_SHORT).show();
            }
        }else if(resultCode == RESULT_CANCELED){
            Toast.makeText(this, "Sign in canceled", Toast.LENGTH_SHORT).show();
            finish();
        }

        Toast.makeText(this, String.valueOf(requestCode), Toast.LENGTH_SHORT).show();
    }

Обратите внимание, что внизу я добавил Toaster для отображения значения переменной requestCode:

Toast.makeText(this, String.valueOf(requestCode), Toast.LENGTH_SHORT).show();

requestCode всегда 1 (и всегда равно постоянному значению RC_SIGN_IN) после выхода из системы или даже при первом запуске приложения.

Вещи, которые я пробовал: стереть данные / кэш, переустановить приложение, отключить / включить Don't keep activities в Developer options.

Вот полный MainActivity.java код:

https://ideone.com/YyF0tr

Я уже спрашивал на форумах курса , но пока не получил ответа, и решения, предоставленные для аналогичной проблемы, не решили мою проблему.

Я использую физический LG G3 для тестирования приложения.

UPDATE:

resultCode возвращает 0. Не путать с requestCode, который всегда возвращает 1, как указано выше.

1 Ответ

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

Хорошо, ребята, Требуется мужество и смирение, чтобы признать, что вы не правы , но это случается очень часто, когда кто-то исследует новую технологию и является частью кривой обучения. Проблема в моем else if заявлении. Он должен быть вложен во второй оператор if:

Там написано:

        if(requestCode == RC_SIGN_IN){
            if(resultCode == RESULT_OK) {
                Toast.makeText(this, "Signed in!", Toast.LENGTH_SHORT).show();
            }
        }else if(resultCode == RESULT_CANCELED){
            Toast.makeText(this, "Sign in canceled", Toast.LENGTH_SHORT).show();
            finish();
        }

Следует сказать:

        if(requestCode == RC_SIGN_IN){
            if(resultCode == RESULT_OK) {
                Toast.makeText(this, "Signed in!", Toast.LENGTH_SHORT).show();
            }else if(resultCode == RESULT_CANCELED){
                Toast.makeText(this, "Sign in canceled", Toast.LENGTH_SHORT).show();
                finish();
            }
        }

Теперь петля кнопки "назад" исчезла.

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