登录屏幕上的“后退”按钮循环

时间:2018-10-31 16:20:55

标签: android firebase firebase-realtime-database firebase-authentication

我正在关注Android Studio上的Firebase in a Weekend course (Android) from Udacity。从星期六开始的Lesson 36. Handling Cancelled Sign In上,显示了如何解决与您按下“后退按钮”相关的错误,并且应用程序不断显示登录屏幕。这是应该解决此问题的代码,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

I've already asked on the course's forums,但还没有答案,针对类似问题的解决方案也无法解决我的问题。

我正在使用物理LG G3来测试应用程序。

更新:

resultCode返回0。不要与requestCode混淆,它总是如上所述返回1

1 个答案:

答案 0 :(得分:0)

好的,It Takes Guts And Humility To Admit That You Are Wrong,但是当人们探索一种新技术时,它经常发生,并且是学习曲线的一部分。问题是我的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();
            }
        }

现在后退按钮循环消失了。