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 语句不会失败
我这里有一个基本代码块,其中包含活动之间的简单数据传递。基本上当有数据接收时,更改按钮的文本:
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 语句不会失败