Ho un problema con GridLayoutManger
setSpanSizeLookup
, quando cambia l'orientamento dell'attività, sto cambiando il conteggio dello span mentre controllo se la posizione specifica è una sorta di tipo, questo funziona perfettamente sul cambio di orientamento, il mio unico problema è, sto usando zxing
biblioteca per fare la scansione del codice a barre, ogni volta che un button
si fa clic su sto aprendo l'intento di default zxing
e data di recuperare da esso, tuttavia quando zxing
sta aprendo va a landscape
e il mio attuale orientamento attività è portrait
questo dà io il IllegalArgumentException
che il gestore di layout genera quando si apre solo l'intento Xzing
, il registro di crash è come questo
java.lang.IllegalArgumentException: Item at position 0 requires 2 spans but GridLayoutManager has only 1 spans.
Questo problema non si verifica se ruoto il telefono, accade solo quando lancio l'intento Xzing
, non riesco davvero a capire come risolvo questo problema perché mi disturba. ecco la mia spanSizeLookup
-GridLayoutManager spanSizeLookup bug
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return adapter.getHolders().get(position).getLabelHolder() != null ? getResources().getInteger(R.integer.span) : 1;
}
});
il span
è base su dimensioni dello schermo in modo che possa essere 1-2, 2-3 e 3-4. Ripeto questo non mi dà alcun errore sul cambio di orientamento, solo l'errore si verifica quando apro il zxing
P.S se apro zxing intent
mentre la mia attività è su landspace
l'arresto non si verificherà.
Modifica
sembra che solo lanciare l'intento zxing
predefinita che causa questo problema, sto avendo un activity
dove va landscape
dopo si lancia e la exception
non si è verificato, come una soluzione che ho fatto , è che ho creato un activity
che gestisce la scansione barcode
con un ritardo di 1 secondo per lanciare il intent
come se non l'avessi fatto, getterebbe lo stesso exception
.
Edit 2
Ho appena scoperto che, anche senza setSpanSpizeLookup l'incidente si verifica ancora. chiamando semplicemente manager.setSpanCount(getResources().getInteger(R.integer.span))
getResources(). GetInteger (R.integer.column) dipende dall'orientamento come ho menzionato può essere 2,3,4 a seconda della dimensione del dispositivo e dell'orientamento del dispositivo è – k0sh
ah, ottenuto. nome attributo leggermente confuso. – Andy
kinda di, come im usando quel attr con cose diverse, così invece di creare nuovo attr che fa lo stesso im ri-usarlo: p, im non proprio sicuro se ho provato la tua soluzione, tuttavia lo controllerò subito e aggiornerò u – k0sh