我目前正在创建一个具有不同选项的Android应用程序。其中一个选项是有一个按钮,默认显示“激活”。当应用程序运行时,单击它会将其更改为“禁用”,然后再次单击时“激活”。我相信我所要做的就是.getText带有一个字符串变量,然后在if语句中使用这个变量,但似乎它没有对我的任何条件做出反应......
final Button button = (Button) findViewById(R.id.bSensor);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
String buttonText = button.getText().toString();
if (buttonText == "@string/Disable") {
button.setText(R.string.Enable);
}
else if (buttonText == "@string/Enable"){
button.setText(R.string.Disable);
}
}
});
感谢您的帮助
Phyzikk
答案 0 :(得分:2)
在比较Java中的字符串时,不应使用==运算符。 Source
您应该使用字符串的.equals()方法,或者您可以保留一个全局布尔状态标志来确定设置的值。这样,每次需要确定它是否处于活动状态或禁用时,您都不需要进行字符串比较。
答案 1 :(得分:1)
使用.equals
来比较字符串。您不需要@String/
前缀,因为这不是按钮显示的部分。
final Button button = (Button) findViewById(R.id.bSensor);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
String buttonText = button.getText().toString();
if (buttonText.equals(getResources().getText(R.string.Disable)) {
button.setText(R.string.Enable);
}
else if (buttonText.equals(getResources().getText(R.string.Enable)){
button.setText(R.string.Disable);
}
}
});