我写了发现从数组值中获取标记的代码。我在else
条件下烤面包。当我尝试运行它时,吐司并没有消失。如果我直接按搜索按钮,它将转到数组的第一个值。
这是代码:
btnsearch.setOnClickListener(new View.OnClickListener() {
int duration = Toast.LENGTH_SHORT;
@Override
public void onClick(View view) {
for(int i=0; i < address.length; i++) {
if (address[i].toLowerCase().contains(editsearch.getText().toString().trim().toLowerCase())){
marker.remove();
myMap.addMarker(new MarkerOptions().position(new LatLng(lat[i],lon[i])).title(address[i]).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)));
CameraPosition campos = new CameraPosition.Builder()
.target(new LatLng(lat[i],lon[i]))
.zoom(18)
.build();
CameraUpdate camUpd3 = CameraUpdateFactory.newCameraPosition(campos);
myMap.animateCamera(camUpd3);
break;
}
}
Toast.makeText(Myactivity.this, "Error", duration).show();
}
});
我试图得到错误的结果,以便可以看到吐司消息,但是当我输入正确的值时,它仍然处于
else
条件。我希望在输入错误的值时显示烤面包消息。该值是例如“巴黎”,“罗马”,“阿尔伯塔”,“苏黎世”的地址数组。当我尝试输入悉尼时,它应该显示为地址不可用。
最佳答案
之所以发生这种情况,是因为您每次在for循环中进行迭代时都会举杯敬酒。如果条件为假,则每次迭代都进入else部分。为了解决这个问题,您只需要从Toast
中删除该for loop
。
希望能帮助到你。