![](/img/trans.png)
[英]java.lang.IndexOutOfBoundsException: Invalid index 5, size is 5
[英]Protobuf + java java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
if (hashTags!=null && hashTags.size()>0) {
for (int i = 0; i<hashTags.size();i++){
getPostsRequestBuilder.setTags(i, hashTags.get(i));
}
}
现在,hashTags是一个ArrayList<String>
并且它不是空的,所以问题不在于此。 protobuf中的标签是重复的字符串。 因此,如果我删除getPostsRequestBuilder.setTags却不执行任何操作-程序不会崩溃,那么问题就出在这里。 它在第一个(0)元素上崩溃
12-22 15:24:25.390: E/AndroidRuntime(6252): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
12-22 15:24:25.390: E/AndroidRuntime(6252): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
12-22 15:24:25.390: E/AndroidRuntime(6252): at java.util.ArrayList.set(ArrayList.java:481)
12-22 15:24:25.390: E/AndroidRuntime(6252): at com.google.protobuf.LazyStringArrayList.set(LazyStringArrayList.java:119)
12-22 15:24:25.390: E/AndroidRuntime(6252): at com.google.protobuf.LazyStringArrayList.set(LazyStringArrayList.java:1)
12-22 15:24:25.390: E/AndroidRuntime(6252): at protobuf.shrick.Shrick$GetPostsRequest$Builder.setTags(Shrick.java:20845)
12-22 15:24:25.390: E/AndroidRuntime(6252): at pro.shrick.asynctasks.SearchRequest.doInBackground(SearchRequest.java:29)
12-22 15:24:25.390: E/AndroidRuntime(6252): at pro.shrick.asynctasks.SearchRequest.doInBackground(SearchRequest.java:1)
您只应使用set*
方法覆盖重复字段中当前的值。 您的重复字段当前为空,因此没有第0个元素可以覆盖。
使用add*
方法将新值添加到重复字段:
getPostsRequestBuilder.addTags(hashTags.get(i));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.