【发布时间】:2015-08-07 18:56:43
【问题描述】:
我遇到GridLayoutMangersetSpanSizeLookup 的问题,当活动的方向发生变化时,我正在更改跨度计数,同时检查特定位置是否是某种类型,这在方向变化上非常有效,我唯一的问题是,我正在使用zxing 库进行条形码扫描,每当单击button 时,我都会打开zxing 默认意图并从中检索日期,但是当zxing 打开时,它会转到@ 987654327@,我当前的活动方向是portrait,这给了我布局管理在仅打开Xzing 意图时抛出的IllegalArgumentException,崩溃日志是这样的java.lang.IllegalArgumentException: Item at position 0 requires 2 spans but GridLayoutManager has only 1 spans.
如果我旋转手机,则不会出现此问题,仅当我启动 Xzing 意图时才会发生,我无法真正弄清楚如何解决此问题,因为它困扰着我。这是我的spanSizeLookup -
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return adapter.getHolders().get(position).getLabelHolder() != null ? getResources().getInteger(R.integer.span) : 1;
}
});
span 基于屏幕尺寸,因此可以是 1-2、2-3 和 3-4。我重复一遍这不会给我任何方向更改错误,只有当我打开zxing时才会出现错误@
P.S 如果我打开zxing intent 而我的活动是在landspace 上,则不会发生崩溃。
编辑
似乎只是启动 zxing 导致此问题的默认意图,我有一个 activity 在它启动后它转到 landscape 并且 exception 没有发生,作为我所做的解决方法,是我创建了一个activity 来处理barcode 扫描,延迟1 秒来启动intent,就好像我没有这样做一样,它会抛出相同的exception。
编辑 2
我刚刚发现,即使没有 setSpanSpizeLookup,崩溃仍然会发生。只需致电manager.setSpanCount(getResources().getInteger(R.integer.span))
【问题讨论】:
标签: android zxing android-recyclerview gridlayoutmanager