单击折线并在android

时间:2017-03-15 14:07:16

标签: java android google-maps polyline

我需要一些帮助。正如您在我的代码中看到的那样。看来我总是得到别的结果。

例如:单击折线后,字符串 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();
    }
}

2 个答案:

答案 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的值。

尝试在出现问题时进行调试。