Списък на Flex 4.5 - грешка secureIndexIsVisible

В моето приложение имам списък с елементи, които могат да бъдат променяни чрез щракване върху списъка, използване на бутон за следващ/предишен или чрез меню, което им позволява да прескачат между елементи (главно за версията на телефона, която не показва списъка ).

Използвам функцията secureIndexIsVisible, след като доставчикът на данни за списъка е попълнен. Понякога обаче, когато се върна на тази страница, приложението се срива със следната грешка:

RangeError: Error #1125: The index 0 is out of range 0.
at spark.layouts.supportClasses::LinearLayoutVector/getMajorSize()[E:\dev\4.y\frameworks\projects\spark\src\spark\layouts\supportClasses\LinearLayoutVector.as:420]

Странното е, че индексът, който подавам на функцията, когато тя се срине, не е 0. Може да бъде 1 или 3 или вероятно всичко. Мога да спра приложението да се срине, ако премахна извикването на функцията, но имам нужда от списъка, за да покажа кой въпрос е избран в момента.

Действителният ред, който се срива, е следният: var block:Block = blockTable[index >> BLOCK_SHIFT]; от функция, наречена getMajorSize


person Rjs37    schedule 28.02.2012    source източник


Отговори (2)


Тъй като това остана без отговор толкова дълго, реших, че ще отговоря сам с това, което наскоро направих.

Успях да реша този проблем, като промених главно точките, където извиках функцията. т.е. беше извикан твърде рано.

Въпреки това наскоро преминах към използване на персонализирана функция, която някой друг публикува, тъй като открих, че secureIndexIsVisible често скача на грешна позиция в списъка (поради разнообразие във височините на елементите).

Функцията може да бъде намерена на този въпрос и се нарича scrollToIndex: Превъртете до избрания елемент в компонента Flex 4 Spark List

person Rjs37    schedule 28.09.2012
comment
... Но кога в крайна сметка го извикахте, за да работи? Искам да кажа, по дяволите, би било хубаво да има някакво събитие, което да се задейства, след като цялото оформление е готово. Има ли нещо очевидно, което току-що съм пропуснал? - person DuneCat; 23.04.2014

Тази грешка е свързана с FLEX-28291, която трябва да бъде коригирана в следващата версия на Apache Flex (вероятно 4.14).

person user166267    schedule 03.09.2014