我遇到了一个问题GridLayoutManger
setSpanSizeLookup
,当活动的方向发生变化时,我正在更改跨度计数,同时检查特定位置是否是某种类型,这在方向变化上非常有效,我唯一的问题是,我正在使用zxing
库进行条形码扫描,每当单击 a 时,button
我都会打开zxing
默认意图并从中检索日期,但是当zxing
打开它时landscape
,我当前的活动方向是portrait
这给了我IllegalArgumentException
布局管理仅在打开Xzing
意图时抛出的问题,崩溃日志是因为
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
PS时才会发生错误,如果我zxing intent
在我的活动正在进行时打开,则landspace
不会发生崩溃。
编辑
似乎只是启动了zxing
导致此问题的默认意图,我有一个启动后它的去向并且activity
没有发生,作为我所做的解决方法,是我创建了一个处理延迟为 1 的扫描第二个启动好像我没有那样做,它会抛出相同的。landscape
exception
activity
barcode
intent
exception
编辑 2
我刚刚发现,即使没有 setSpanSpizeLookup,崩溃仍然会发生。只需打电话manager.setSpanCount(getResources().getInteger(R.integer.span))