[英]Fatal Exception: java.lang.IndexOutOfBoundsException Invalid index 0, size is 0
[英]Fatal Exception: IndexOutOfBoundsException using Picasso (only happen in some device)
最近,我注意到這起致命的崩潰發生在我的Android應用程序上。
致命異常:java.lang.IndexOutOfBoundsException索引:1,大小:0
當用戶單擊進入項目頁面,並且無法從我的橫幅數組加載索引1並將圖像設置為可繪制時,就會發生此問題。
我使用幾種不同品牌的android設備測試了該應用程序,但它們都可以正常運行而不會崩潰。 最重要的是,我能夠從數組中加載圖像並設置圖像。
日志如下:
但是,那真是太奇怪了,只有大約5%的用戶遇到此問題。 (每天約有100-200個活躍用戶)。 我的一位朋友在加載到項目頁面時發生了一次崩潰。 但是他只崩潰了一次,並且是普通用戶,每天都在使用該應用進行幾次會話。
這是我的商品頁面上的代碼:
(DetailActivity.java:222 = Picasso.with(this).load(sidebannerAry.get(sidebanner1index).get(“ image”))。into(sidebanner1Btn);)
public class DetailActivity extends Activity{
public static ArrayList<HashMap<String,String>> sidebannerAry = new ArrayList<HashMap<String,String>>();
int sidebanner1index = 1;
}
protected void onCreate(Bundle savedInstanceState) {
sidebanner1Btn = (ImageView) findViewById(R.id.sidebanner1btn);
sidebanner1Btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent b = new Intent(Intent.ACTION_VIEW, Uri.parse(sidebannerAry.get(sidebanner1index).get("url")));
startActivity(b);
}
});
Picasso.with(this).load(sidebannerAry.get(sidebanner1index).get("image")).into(sidebanner1Btn);
}
這是我在應用程序啟動屏幕期間用於從數據庫檢索數據的代碼:
JSONArray sidebannerAry = result.getJSONArray("sidebannerData");
for (int i = 0; i < sidebannerAry.length(); i++){
JSONObject temp = sidebannerAry.getJSONObject(i);
HashMap<String, String> map = new HashMap<String, String>();
String image = DefensiveClass.optString(temp, "bannerImage");
String url = DefensiveClass.optString(temp, "bannerURL");
map.put("image", image);
map.put("url", url);
DetailActivity.sidebannerAry.add(map);
}
誰能幫我看看我做錯了什么嗎? 非常感謝。
錯誤發生在以下行:
(DetailActivity.java:222 = Picasso.with(this).load(sidebannerAry.get(sidebanner1index).get(“ image”))。into(sidebanner1Btn);)
在上一行中,可能發生IndexOutOfBoundsException
的唯一部分是:-
sidebannerAry.get(sidebanner1index)
您已將sidebanner1index
的值設置為“ 1”。 因此,當sidebannerAry
元素少於2個時,您會遇到錯誤。 這就是為什么只有一定比例的用戶會收到此錯誤的原因。
當您嘗試訪問大於數據結構長度的索引時,發生索引超出范圍錯誤。
解決這個問題最簡單的方法是畢加索行檢查閹了前放一個標志sidebannerAry
的長度比更高sidebannerIndex
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.