Android - 方法 setText() 正在更改小部件的文本,即使它从未被调用

Android - The method setText() is changing text of a widget even though it is never called

我这里有一个基本代码块,其中包含活动之间的简单数据传递。基本上当有数据接收时,更改按钮的文本:

Bundle intentData = getIntent().getExtras();     
if (intentData != null) {
    String passedMsg = intentData.getString("userMsg");
    Button mainButton = (Button) findViewById(R.id.main_button);
    mainButton.setText(passedMsg);
} 

然而,即使在 if 条件失败的情况下,按钮的文本仍然会发生变化。当我注释掉行 mainButton.setText(passedMsg); 时,按钮的文本保持不变。

似乎 setText() 的存在会改变按钮的文本,而不管是否到达该行代码。为什么要这样做?

您正在检查的条件不是您应该检查的条件,或者在您编译的代码中,if 语句在大括号前紧跟一个分号。

显然,您的代码块被执行了多次。为了证明这一点,做类似

的事情
static boolean initialized = false;

public void enteredBlockOfCode() {
     if(!initialized) {

            // code here only runs once ...

        initialized = true;
    }
}

似乎 intentData 从未通过 null 因此 if 语句不会失败