簡體   English   中英

Java if () 語句總是假的?

[英]Java if () statement always false?

在我在 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。

根據我的理解和經驗,在調試模式下動態更改代碼時,它會嘗試從給出斷點的點再次運行,以便達到調試目的,您無需再次觸發它。 一旦拋出任何異常或手動完成當前線程執行,它將不會返回到 if 語句。 在這種情況下,必須再次重新觸發它才能在更改完成后執行。

我將 currentUser 的聲明移到 createView() 內部,問題就消失了。 我不明白為什么這會有所不同,特別是因為類似應用程序中的相同代碼沒有這個問題,並且 currentUser 被聲明為全局的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM