【问题标题】:Why this array throws an array out of bound exception为什么这个数组会抛出一个数组越界异常
【发布时间】:2013-02-11 10:30:11
【问题描述】:

当我从计时器调用此函数时,为什么会尝试抛出绑定异常的数组。

我该如何解决这个问题。此代码在 run 函数之间调用。 list<Address> addresses 是超出范围的数组异常。告诉我一些解决这个问题的方法

public String get_address(double latitude ,double longitude)
{
    String address = null;

    if(Geocoder.isPresent())
    {
        try{
            Geocoder geocoder2 = new Geocoder(mContext, Locale.getDefault());
              List<Address> addresses;
              addresses = geocoder2.getFromLocation(latitude, longitude, 2);
               if(addresses != null) {
                     Address returnedAddress = addresses.get(0);

                     StringBuilder strReturnedAddress = new StringBuilder("Address:\n");
                     for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) {
                     strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
                    }
                     /*if(returnedAddress.getMaxAddressLineIndex() > 0){
                         strReturnedAddress.append(returnedAddress.getAddressLine(0) + ", ");
                       }

                       strReturnedAddress.append(returnedAddress.getLocality() + ", ");
                       strReturnedAddress.append(returnedAddress.getCountryName());
                     */

                     address=strReturnedAddress.toString();
                     }
                     else{
                     address="No Address returned!";
                     }
               //return address;

        }
        catch(Exception e)
        {
            Log.e("MyAPP", "Reverse geo lookup failed", e);
                address="reverse geo look up failed";
             //return address;
        }

    }
    else
    {
        address="Geocoder is not present";
        //return address;
    }
    return address;
}

【问题讨论】:

    标签: android android-layout android-intent android-emulator


    【解决方案1】:

    addresses 可以为空(与 null 不同但您无法获取第一项)

    将if(addresses != null) 替换为if(addresses != null &amp;&amp; !addresses.isEmpty())

    【讨论】:

    • 现在显示地址="没有返回地址!";如何完美获取地址告诉我获取地址的解决方案
    • 这取决于你给函数的纬度和经度。我想地理编码器没有为世界上的每个地理定位点返回一些东西。
    【解决方案2】:

    来自文档:

    返回地址对象的列表。如果未找到匹配项或没有可用的后端服务,则返回 null 或空列表。

    返回一个包含 0 个对象的新 ArrayList。您需要检查:

    if(addresses != null && addresses.size() > 0) {
    

    【讨论】:

    • 感谢您的回复....当我将此代码放入计时器运行方法中时,此代码可以正常工作,它会生成此 else 模式,现在它显示地址 =“没有返回地址!”;如何完美获取地址告诉我如何获取地址
    • 您能告诉我们您要获取地址的经度和纬度是多少吗?可能这个坐标没有任何关联的地址
    • 嘿,有一个问题位置管理器无法返回纬度和经度......但是当我单独为地理定位器执行这个程序时,它返回所有值......当我把这个计时器中的代码然后它显示这个问题没有得到纬度和经度......
    【解决方案3】:

    由于地址列表已初始化,可能为空,但不为空。

    if(addresses != null && !adresses.isEmpty())
    

    【讨论】:

    • 感谢您的回复,现在显示地址=“未返回地址!”;如何完美获取地址告诉我如何获取地址
    猜你喜欢
    • 2012-11-08
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2015-03-31
    • 2011-03-25
    • 1970-01-01
    相关资源
    最近更新 更多