【问题标题】:Clicking polyline and display the result in android单击折线并在android中显示结果
【发布时间】:2017-08-06 07:58:01
【问题描述】:

我需要一些帮助。正如您在我的代码中看到的那样。看来我总是得到 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();
    }
}

【问题讨论】:

  • 将 =="0" 更改为 equals("0"),在 Java 中,字符串以不同的方式工作,并且大多数时候 == 运算符不起作用。
  • 注意到先生。它奏效了。

标签: java android google-maps polyline


【解决方案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() 是方法。但是 == 运算符比较堆中对象的引用或内存位置,无论它们是否指向相同的位置。每当我们使用运算符 new 创建任何对象时,它都会为该对象创建新的内存位置。因此,我们使用 == 运算符来检查两个对象的内存位置或地址,无论它们是否相同。

您可以在以下位置阅读更多内容:

http://www.java67.com/2012/11/difference-between-operator-and-equals-method-in.html#ixzz4bPGNw3SY

【讨论】:

    【解决方案2】:

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

    要评估字符串,请使用: 字符串.等于 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 的值。

    如果出现问题,请尝试调试它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多