我的代码显示了logcat超出范围0的索引0大小的异常错误。 当我打开此活动时,应用程序崩溃。我不知道这是什么问题,请帮助我解决此问题。谢谢 这是显示用户位置的google地图
getEntry
我认为这是问题,但我不知道此功能的作用。
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_map);
initCompnent();
showBannerAd();
if(mMapView!=null){
mMapView.onCreate(null);
mMapView.onResume();
mMapView.getMapAsync(this);
}
Intent i = getIntent();
getNumber =i.getStringExtra("number");
getLocation =i.getStringExtra("location");
Log.e("location data",getLocation);
getCounty= i.getStringExtra("country");
Geocoder gc = new Geocoder(this);
try {
List<Address> list = gc.getFromLocationName(getLocation, 1);
Address add = list.get(0);
latt = add.getLatitude();
lon = add.getLongitude();
if(getLocation.equals("null")) {
//country lat long
List<Address> list1 = gc.getFromLocationName(getCounty, 1);
Address add1 = list1.get(0);
latt = add1.getLatitude();
lon = add1.getLongitude();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void initCompnent() {
mBannerAd= (AdView) findViewById(R.id.banner_AdView_m);
mMapView = (MapView) findViewById(R.id.map);
String android_id = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
mDeviceId=md5(android_id);
}
private void showBannerAd() {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(mDeviceId)
.build();
mBannerAd.loadAd(adRequest);
}
这是地图功能
public String md5(String s) {
try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuffer hexString = new StringBuffer();
for (int i=0; i<messageDigest.length; i++)
hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
答案 0 :(得分:0)
您的问题很可能在一行中
Address add = list.get(0);
或
Address add1 = list1.get(0);
在两个列表中,您都尝试获取第一个(第0个)元素,而不检查列表中是否确实有任何元素。您应该在使用列表之前使用
检查列表是否为空if(!list.isEmpty())
作为Tomer Shemesh的旁注,您执行的空检查也显得很虚假。首先,您可能想改为检查getLocation == null
。其次,您可能想先尝试进行检查,然后再尝试使用getLocation
字符串。
答案 1 :(得分:0)
我能够通过更新API并添加对!list.isempty的检查来解决此问题。谢谢