我需要一些帮助。正如您在我的代码中看到的那样。看来我总是得到别的结果。
例如:单击折线后,字符串 s 的结果为 1 。结果应该在(s == "1")
然后执行吐司。但最终总是会去其他地方。
@Override
public void onPolylineClick(Polyline polyline) {
// Flip the values of the red, green and blue components of the polyline's color.
polyline.setColor(polyline.getColor() ^ 0x00ffffff);
String s = polyline.getId().substring(2);
if (s == "0")
{
Toast.makeText(getActivity(), "pl0 here" , Toast.LENGTH_SHORT).show();
}
else if (s == "1")
{
Toast.makeText(getActivity(), "pl1 here", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getActivity(), "Inside ELSe", Toast.LENGTH_SHORT).show();
Toast.makeText(getActivity(), "" + s, Toast.LENGTH_SHORT).show();
Toast.makeText(getActivity(), "pl" + polyline.getId().substring(2), Toast.LENGTH_SHORT).show();
Toast.makeText(getActivity(), "" + s + "==" + "pl" + polyline.getId().substring(2), Toast.LENGTH_LONG).show();
}
}
答案 0 :(得分:1)
小心使用==运算符,Java不会以同样的方式识别它:
What’s the difference between equals() and ==?
if (s.equals("0"))
{
Toast.makeText(getActivity(), "pl0 here" , Toast.LENGTH_SHORT).show();
}
else if (s.equals("1"))
{
Toast.makeText(getActivity(), "pl1 here", Toast.LENGTH_SHORT).show();
}
equals()方法和==运算符都用于比较Java中的两个对象。 ==是一个运算符,equals()是方法。但是==运算符比较堆中对象的引用或内存位置,无论它们是否指向相同的位置。每当我们使用operator new创建任何对象时,它将为该对象创建新的内存位置。所以我们使用==运算符来检查两个对象的内存位置或地址是否相同。
您可以在以下网址阅读更多内容:
http://www.java67.com/2012/11/difference-between-operator-and-equals-method-in.html#ixzz4bPGNw3SY
答案 1 :(得分:0)
在java中,你不用==来评估字符串,因为String是一个对象而不是一个原语。
要评估字符串,请使用: string.equals string.equalsIgnoreCase
在您的情况下,请更改为:
if ("0".equals(s)) {
Toast.makeText(getActivity(), "pl0 here" , Toast.LENGTH_SHORT).show();
}
else if ("1".equals(s)) {
Toast.makeText(getActivity(), "pl1 here", Toast.LENGTH_SHORT).show();
}
将有助于(可能),具体取决于s的值。
尝试在出现问题时进行调试。