App崩溃,因为我正在ArrayList中搜索不存在的索引。我该如何解决?

问题描述 投票:-1回答:1

我已经阅读了有关IOExceptions的所有文档,以及它们产生时的含义。我知道我正在我不存在的ArrayList中搜索en索引,因此产生了IndexOutOfBoundsException: Index: 0, Size: 0。我已查阅以下文档和帖子以尝试自行解决此问题,但未成功。经过深入研究后,我希望有人可以帮助我解决这个问题。我已经合法地浏览了许多类似类型问题的帖子,独自尝试解决我的错误,但未能得出正确的结论。

What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it?https://docs.oracle.com/javase/tutorial/essential/exceptions/throwing.html

例如,我尝试在if周围放置addressList语句,并显示toast消息,警告用户他们必须优化搜索。在地图上搜索大多数地点时,结果很好,并且在该特定位置的地图上放置了一个标记。但是,当我搜索Paris时,我得到了例外,就像我说的那样,我将其包装在if语句和其他方法中,但没有成功。

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                String location = searchView.getQuery().toString();
                List<Address> addressList = null;

                if (location != null || !location.equals("")) {
                    Geocoder geocoder = new Geocoder(MapsActivityPublisher.this);
                    try {
                        addressList = geocoder.getFromLocationName(location, 1);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    Address address = addressList.get(0);
                    LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude());
                    map.addMarker(new MarkerOptions().position(latLng).title(location).draggable(true));
                    map.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));

                }

                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                return false;
            }
        });

Logcat

java.lang.IndexOutOfBoundsException:索引:0,大小:0在java.util.ArrayList.get(ArrayList.java:437)在com.e.events.Map.MapsActivityPublisher $ 1.onQueryTextSubmit(MapsActivityPublisher.java:62)在android.widget.SearchView.onSubmitQuery(SearchView.java:1270)在android.widget.SearchView.access $ 1000(SearchView.java:99)在android.widget.SearchView $ 7.onEditorAction(SearchView.java:1247)在android.widget.TextView.onEditorAction(TextView.java:6453)在com.android.internal.widget.EditableInputConnection.performEditorAction(EditableInputConnection.java:138)在com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:363)在com.android.internal.view.IInputConnectionWrapper $ MyHandler.handleMessage(IInputConnectionWrapper.java:85)在android.os.Handler.dispatchMessage(Handler.java:112)在android.os.Looper.loop(Looper.java:216)在android.app.ActivityThread.main(ActivityThread.java:7625)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:524)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)

我已经阅读了有关IOExceptions的所有文档,以及它们产生时的含义。我知道我正在我不存在的ArrayList中搜索en索引,因此产生...

java android exception indexoutofboundsexception
1个回答
0
投票

null获取数据之前检查emptyArrayList

© www.soinside.com 2019 - 2024. All rights reserved.