I ran your code, and it works fine.
The only way it produces the error you described is by removing these lines:
if (addresses == null || addresses.size() < 1) {
return null;
}
On Sunday, November 4, 2012 6:59:09 AM UTC-6, Bevor wrote:
>
> I have the following class which returns a coordinate depending on the
> street name I enter.
>
> public class CoordinateViaStreetNameFinder {
> private Geocoder geocoder;
>
> public CoordinateViaStreetNameFinder() {
> geocoder = new Geocoder(ApplicationContext.getAppContext(),
> Locale.GERMAN);
> }
>
> public Coordinate find(String streetName, String streetNr) throws
> IOException {
> String searchPattern = streetName + ", " + streetNr + ", AT";
>
> List<Address> addresses =
> geocoder.getFromLocationName(searchPattern, 1);
>
> if (addresses == null || addresses.size() < 1) {
> return null;
> }
>
> return new Coordinate(addresses.get(0).getLongitude(),
> addresses.get(0).getLatitude());
> }
> }
>
> This works for valid street names. When I enter an invalid street name
> like "foobar street", I run into this exception, when the app tries to
> execute the if statement:
>
> java.lang.IndexOutOfBoundsException: Invalid location 0, size is 0
> at java.util.ArrayList.get(ArrayList.java:341)
>
> I'm a bit confused since getFromLocationName should return by definition
> null or empty list. How does this error come then? I invoke this method in
> a Android JUnit test:
> This test works:
>
> public void testValidResult() throws IOException {
> CoordinateViaStreetNameFinder coordinateViaStreetNameFinder = new
> CoordinateViaStreetNameFinder();
>
> Coordinate coordinate =
> coordinateViaStreetNameFinder.find("stephansplatz", "1");
>
> assertEquals(16, (int)(coordinate.getLongitude()));
> assertEquals(48, (int)(coordinate.getLatitude()));
> }
>
> This test produces the error.
>
> public void testInvalidResult() throws IOException {
> CoordinateViaStreetNameFinder coordinateViaStreetNameFinder = new
> CoordinateViaStreetNameFinder();
>
> Coordinate coordinate = coordinateViaStreetNameFinder.find("foobar
> street", "1");
>
> assertNull(coordinate);
> }
>
> What's wrong here?
>
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en