加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – ANDROID:If … Else as Switch on String

发布时间:2020-12-15 02:04:36 所属栏目:Java 来源:网络整理
导读:我正在编写一个 Android应用程序,用于显示我们的电话线的状态,但这既不是在这里也不是在那里. 我打电话给我们的一个服务器并获得状态的JSON文本.然后我解析这个把每一行放到一个SortedMap(TreeMap)中,Key是行的名称,我自己的类作为值(它保存状态和其他细节).
我正在编写一个 Android应用程序,用于显示我们的电话线的状态,但这既不是在这里也不是在那里.

我打电话给我们的一个服务器并获得状态的JSON文本.然后我解析这个把每一行放到一个SortedMap(TreeMap)中,Key是行的名称,我自己的类作为值(它保存状态和其他细节).

一切正常.

当应用程序运行时,它应该显示每行和我检索到的信息,但没有任何更新.

返回JSON并正确添加到Map.

这是无效代码的快照.我只是遍历地图并根据键的值更新相关的TextView.我遇到的问题是,当它到达匹配它的IF语句时,它永远不会运行该代码.它会跳过它,就像值不匹配一样.

我看不出任何错误.这是唯一的方法,因为我知道你不能使用Switch..Case等?

谁能看到我的错误?我已经在Android上编码了一个星期,所以它可能是一个新手错误!!

谢谢
尼尔

Iterator iterator = mapLines.entrySet().iterator();

while(iterator.hasNext())
{
// key=value separator this by Map.Entry to get key and value
Map.Entry<String,Status> mapEntry = (Map.Entry<String,Status>)iterator.next();

// getKey is used to get key of Map
String key = (String)mapEntry.getKey();

// getValue is used to get value of key in Map
Status value = (Status)mapEntry.getValue();

if(key == "Ski")
{
    TextView tvStatus = (TextView)findViewById(R.id.SkiStatus);

    tvStatus.setText(value.Status);
}
else if(key == "Cruise")
{
    TextView tvStatus = (TextView)findViewById(R.id.CruiseStatus);

    tvStatus.setText(value.Status);
}
else if(key == "Villas")
{
    TextView tvStatus = (TextView)findViewById(R.id.VillasStatus);

    tvStatus.setText(value.Status);
}
}

解决方法

必须使用equals()来比较Java中的String对象.否则,您只需比较两个对象是否是String类的相同实例,并且不比较它们的实际内容:

if (key.equals("Ski")) {
  ...
}

或者,如果key可能为null,则避免NullPointerException:

if ("Ski".equals(key)) {
  ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读