首页 > 解决方案 > Java if() 语句总是假的?

问题描述

在我使用 Java 编程的 20 多年中,我从未遇到过如此令人费解的事情。在以下代码中:

        // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
    currentUser = mAuth.getCurrentUser();
    if (currentUser == null) {
        LoginManager.getInstance().logOut();
        LoginFragment loginFragment = new LoginFragment();
        FragmentManager manager = getActivity().getSupportFragmentManager();
        manager.beginTransaction().replace(R.id.fragment_container, loginFragment, loginFragment.getTag()).commit();
        return view;
    }
    firebase_userID = currentUser.getUid();

我在 if() 语句处设置了一个断点,当我到达那里时,我将变量 currentUser 设置为 null。当我恢复执行时,语句 LoginManager.getInstance().logOut() 应该执行,对吗?相反,代码会一直到 if() 之后的行。为什么会发生这种情况??

为了证明我不是在做梦,以下是相关截图: 在此处输入图像描述在此处输入图像描述

是的,在添加 if() 语句后,我确实重建并重新加载了应用程序。我什至重新启动了 Android Studio。

标签: javaandroidfirebase

解决方案


根据我的理解和经验,当代码在调试模式下动态更改时,它会尝试从给出断点的点再次运行,以便达到调试的目的,您无需再次触发它。一旦抛出任何异常或手动完成当前线程执行,它就不会返回到 if 语句。在这种情况下,必须再次触发它才能在更改完成后执行。


推荐阅读