我写了发现从数组值中获取标记的代码。我在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

希望能帮助到你。

07-23 13:59