1.今天用到了.9图,顺便写下遇到的问题,android studio中现在自动集成了制作.9的制作工具,所以在drawable下鼠标右键图片就可以看到制作.9图片的选项。.9的制作比较简单,左边和上边是控制拉伸的,下边和右边是控制内容显示区域的。在制作了.9之后,编译的时候遇到一个编译不通过的问题:
Error:Execution failed for task ':app:mergeDebugResources'.
这个的原因折腾了我一会,原来是.9图没做正确,在android studio中对.9做了很严格的检查,要求.9图四条边都得描黑(做出限制),不然就编译失败。
2.今天解决了一个bug:
java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 4, found: 5 Pager id:
这个bug是发版之后友盟上报的错,异常描述是在实例化adapter的时候本来是4个fragment,现在又加了一个,变成了5个,而且没有通知adapter,这一个是怎么加上来的呢,最后统计是因为我实例化adapter的时候是在发起网络请求的之后根据服务器数据动态添加fragment的,为现在在别的地方这个方法又被调用了,所以又添加了,而我也没有做判断,所以导致这个原因,这里报的这个错是在view pager的源码里面populate()这个方法里面,下面这段代码是方法里的:
if (N != mExpectedAdapterCount) {
String resName;
try {
resName = getResources().getResourceName(getId());
} catch (Resources.NotFoundException e) {
resName = Integer.toHexString(getId());
}
throw new IllegalStateException("The application's PagerAdapter changed the adapter's"
+ " contents without calling PagerAdapter#notifyDataSetChanged!"
+ " Expected adapter item count: " + mExpectedAdapterCount + ", found: " + N
+ " Pager id: " + resName
+ " Pager class: " + getClass()
+ " Problematic adapter: " + mAdapter.getClass());
}
这里面又两个变量N和mExpectedAdapterCount,这两个值都是count返回的数据个数,当数据发生变化的时候这两个值就会比较,不一致就会抛出以上的异常。bug记录到此。