Lika我在标题中说过,当我想从我的位置获取地址时遇到问题。我不知道问题出在哪里,这是我的堆栈跟踪:从我的位置获取地址android
08-14 18:06:41.035 29629-29629/com.cmn.cmnvtc E/AndroidRuntime:FATAL 例外:主要 过程: com.cmn.cmnvtc,PID:29629 java.lang.IndexOutOfBoundsException:无效索引0,大小为0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:260) at java.util.ArrayList.get(ArrayList .java:313) at com.cmn.cmnvtc.Trajetlibre $ 2.onClick(Trajetlibre.java:122) at android.view.View.performClick(View.java:5265) at android.view.View $ PerformClick.run(View.java:21534) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:207) at android.app.ActivityThread.main(ActivityThread.java:5728) at java.lang.reflect.Method.invoke(Native Method) at com .android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:789) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
和:我的代码的部分地方有问题:
maPosition.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Geocoder gc = new Geocoder(getActivity());
getLocation();
List<Address> list = null;
try {
list = gc.getFromLocation(lat, lng, 1);
if (list!= null) {
Address returnedAddress = list.get(0);
start_address.setText(returnedAddress.getAddressLine(0) + ", " + returnedAddress.getPostalCode() + " " + returnedAddress.getLocality());
} else {
start_address.setText("No Address returned!");
}
} catch (IOException e) {
e.printStackTrace();
start_address.setText("Cannot get address");
}
}
});
你能帮助发现问题?
@Poger类似的东西?
maPosition.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
Geocoder gc = new Geocoder(getActivity());
List<Address> list = null;
try {
list = gc.getFromLocation(lat, lng, 1);
// start_address.setText(Double.toString(lat));
if(list!= null && !list.isEmpty()) {
Address returnedAddress = list.get(0);
StringBuilder adressBuilder = new StringBuilder();
adressBuilder.append(returnedAddress.getAddressLine(0) + ", " + returnedAddress.getPostalCode() + " " + returnedAddress.getLocality());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
start_address.setText("No Address returned!");
}
//job done on the UI thread
});
}
else{
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
start_address.setText("No Address returned!");
}
//job done on the UI thread
});
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
});
我不明白你说的所有内容,但是当我运行我的应用程序,并且在点击按钮之前,我关闭了gps,然后打开它,我得到了一个结果。任何想法? – Shadow956
尝试在后台线程中的代码,希望你的问题将得到解决。我做了同样的事情,对我来说工作很好。 –