【问题标题】:Set text color using if and else statement使用 if 和 else 语句设置文本颜色
【发布时间】:2019-12-03 02:31:47
【问题描述】:

所以我有这个应用程序使用改造客户端向 ROS 服务器发送请求,现在我的问题是我正在设置我的状态,如果状态为“真”,它将设置为 textcolor 为绿色,否则为RED 但是当我将它执行到我的应用程序时,它似乎只执行 else 语句,即使状态为真,它也会显示所有红色。任何人都可以帮助我这个我只是一个初学者。

【问题讨论】:

  • 最好的方法是在应用程序类中创建一个静态布尔值,然后在你想设置颜色的每个地方使用它
  • 谢谢。但是我该怎么做呢?
  • Yen Bico 检查答案

标签: java android if-statement


【解决方案1】:

HardwareStatus 是一个TextView,所以它总是不等于false。也许你想检查它的文字?在这种情况下,您应该使用TextView.getText() 方法

if (HardwareStatus.getText().equals("false")) {
    HardwareStatus.setTextColor(Color.RED);
} else {
    HardwareStatus.setTextColor(Color.GREEN);
}

并且变量的第一个字母应该是小写HardwareStatus => hardwareStatus

【讨论】:

  • 您在此命令中为文本视图设置的值是多少:SoftwareStatus.setText(response.body().getSoftwareStatus());
  • 我有一个 getSoftwareStatus() 方法,它为上面的 ObjectList 类中的文本视图返回一个字符串。
  • 我的意思是你拥有的真正价值。是“真”还是“假”?
  • 这是一个动态应用程序,因此它取决于服务器的状态,但服务器的状态值是 true 或 false。
【解决方案2】:

Duy Khan Ngyuen 的回答是对的,我只是建议你使用 equalsIgnoreCase

if(HardwareStatus.getText().toString().equalsIgnoreCase("false")){ HardwareStatus.setTextColor(Color.RED); }别的{ HardwareStatus.setTextColor(Color.GREEN); }

【讨论】:

  • equalsIgnoreCase 给出一个错误,它说它无法解析该符号
  • 对不起,我忘了添加 toString()。该代码已被编辑,您可以立即尝试。祝你好运
【解决方案3】:

好像没有拿到 SoftwareStatus 的文字,需要先把文字转成字符串,然后比较是否为真。

if(SoftwareStatus.getText().toString().equals("true")) 
{
  SoftwareStatus.setTextColor(Color.GREEN);
} 
else 
{
SoftwareStatus.setTextColor(Color.RED);
}

这是因为 .equals() 通常用于比较字符串/字符/文本

已编辑。

【讨论】:

  • 如果这能解决您的问题,请将其标记为答案,谢谢。
  • 您的意思是我的软件状态方法,即 getSoftwareStatus()。不,它还不是布尔值。它返回字符串。
  • 在查看您的代码后,似乎 getSoftwareStatus() 没有返回“true”,这就是为什么在逻辑语句中它总是以 else 结尾,我建议您尝试检查 getSoftwareStatus() 的字符串正在返回,以便您知道它是否真的在您想要的字符串中返回。
  • 它正在返回我想要的字符串。我的问题是它不会终止整个 if 和 else 语句。
【解决方案4】:

在收到您的响应后,在应用程序类中更新您的布尔值或字符串值,然后为其创建 setter 和 getter,然后在添加检查之前简单地打开您的 textView `

Class ApplicationClass extends Application(){

String statusValue="false";
Boolean statusBoolean=false;


public void updateStatusValue(String value){

this.statusValue=vale;
}

public String getStatusValue(){

return statusValue;
}


}

调用API并得到响应updateStatusValue后

ApplicationClass.updateStatusValue(response.body().getHardwareStatus())



if(ApplicationClass.getStatusBoolean() ||Application.getStatusValue().equalsIgnoreCase("true")) {
SoftwareStatusTv.setTextColor(Color.GREEN);
}else{
 HardwareStatusTv.setTextColor(Color.RED);
}

现在您可以使用这个简单的 getter setter 添加对整个应用程序的检查

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 2014-11-11
    相关资源
    最近更新 更多