Android:getfromLocationName()在地址列表中返回大小0

我有一个位置数据库。当我尝试将它们转换为坐标以便将它们放置在地图上时,会出现错误。我的地址类型地址列表的大小为零。我研究了这个话题。我所有的清单权限均正确。我的手机已连接到互联网。我已经重启了手机。我知道有一个Google问题,解决方案也无济于事。位置准确。请帮忙。

这是错误消息:android.database.CursorIndexOutOfBoundsException:已请求索引0,大小为0

private void setUpMap()  {

DatabaseHandler db = new DatabaseHandler(this);

Cursor c = db.fetchAllAddresses();

String place = c.getString(c.getColumnIndex("name"));

Geocoder geocoder = new Geocoder(this, Locale.getDefault());

List<android.location.Address> addresses = new ArrayList();

try {

addresses = geocoder.getFromLocationName(place,1);

} catch (IOException e) {

e.printStackTrace();

}

android.location.Address add = addresses.get(0);

double lat = add.getLatitude();

double lng = add.getLongitude();

mMap.addMarker(new MarkerOptions().position(new LatLng(lat,lng)).title("Marker"));

}

这是fetchAllAddresses()

  public Cursor fetchAllAddresses() {

SQLiteDatabase db = this.getWritableDatabase();

Cursor mCursor = db.query(TABLE_CONTACTS, new String[]{ "rowid _id", KEY_NAME,},null, null, null,null, null);

if (mCursor != null) {

mCursor.moveToFirst();

}

return mCursor;

}

回答:

看起来您的光标没有任何结果,并且mCursor.moveToFirst();在这种情况下返回false。

通常,您希望检查的结果mCursor.moveToFirst();,就像它返回false一样,您知道您有一个空游标。

空光标是一个单独的问题,很难说出为什么这段代码会发生这种情况。

为了CursorIndexOutOfBoundsException在光标为空时摆脱掉光标,这是一种解决方法:

您可以检查getCount()光标以确保它大于零。另外,请确保关闭游标,否则会发生内存泄漏。

private void setUpMap()  {

DatabaseHandler db = new DatabaseHandler(this);

Cursor c = db.fetchAllAddresses();

//check for empty cursor

if (c.getCount() > 0){

String place = c.getString(c.getColumnIndex("name"));

Geocoder geocoder = new Geocoder(this, Locale.getDefault());

List<android.location.Address> addresses = new ArrayList();

try {

addresses = geocoder.getFromLocationName(place,1);

} catch (IOException e) {

e.printStackTrace();

}

android.location.Address add = addresses.get(0);

double lat = add.getLatitude();

double lng = add.getLongitude();

mMap.addMarker(new MarkerOptions().position(new LatLng(lat,lng)).title("Marker"));

}

c.close(); //get rid of memory leak!

}

以上是 Android:getfromLocationName()在地址列表中返回大小0 的全部内容, 来源链接: utcz.com/qa/402199.html

回到顶部