单击折线并在 android 中显示结果

Clicking polyline and display the result in android

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

例如:字符串s点击折线后结果为1。结果应该在(s == "1") 然后执行toast。但最后总会走到else

@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();
    }
}

在 java 中,您不使用 == 评估字符串,因为 String 是一个对象而不是原始类型。

要评估字符串,请使用: string.equals string.equals忽略大小写

在您的情况下,更改为:

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

遇到问题尽量调试。

注意 == 运算符,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