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
嘗試在後臺線程中的代碼,希望你的問題將得到解決。我做了同樣的事情,對我來說工作很好。 –