Java if()语句始终为假吗?

时间:2020-05-01 09:09:29

标签: java android firebase

在我从事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()之后的行。为什么这会发生呢?

为证明我没有做梦,以下是相关的屏幕截图: enter image description hereenter image description here

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我将currentUser的声明移到createView()内部,问题消失了。我不明白为什么这应该有所作为,尤其是因为相似应用中的相同代码没有此问题,并且currentUser被声明为全局。