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)) { ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |