2017-07-13 6 views
2

GUIから分離されたコンポーネントを操作するために別に保存するコンポーネントのリストがあります(さまざまなソートなど)。 このリストのコンポーネントは別のコンテナに追加され、Y軸方向の単純なボックスレイアウトの要素が表示されます。コードネーム1 - コンテナのコンポーネントをリフレッシュするときのバグ

コンテナ内のコンポーネントをリフレッシュ(すべてのコンポーネントを削除し、リストを再度追加して変更を再検証またはアニメーション化)すると、コンテナ自体のインデックスから境界外の例外が発生します。 REMOVEALL Container.addの繰り返しの()、続いて呼び出すとき

java.lang.IndexOutOfBoundsException: Index: 2, Size: 1 
at java.util.ArrayList.rangeCheckForAdd(ArrayList.java:661) 
at java.util.ArrayList.add(ArrayList.java:473) 
at com.codename1.ui.Container.insertComponentAtImpl(Container.java:629) 
at com.codename1.ui.Container$1.updateState(Container.java:596) 
at com.codename1.ui.animations.ComponentAnimation.updateAnimationState(ComponentAnimation.java:95) 
at com.codename1.ui.AnimationManager.updateAnimations(AnimationManager.java:69) 
at com.codename1.ui.Form.repaintAnimations(Form.java:1373) 
at com.codename1.ui.Display.edtLoopImpl(Display.java:1080) 
at com.codename1.ui.Display.mainEDTLoop(Display.java:997) 
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120) 
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176) 

はどういうわけか、そのコンポーネントを追跡する内部のArrayListは、台無しにされます。誰もがこれについて知っていますか?

private void refreshComponents() { 
     container.removeAll(); 
     container.animateUnlayout(200, 0, null); 

     for (Component cmp : sortedComponentList) { 
      container.add(cmp); 
     } 
     container.animateLayout(150); 
    } 

助けてください。

おかげで、よろしくは

答えて

0

removeAlladd操作のようにシリアライズされていないようです。通常、アニメーションの進行中にコンテナの状態を変更すると、操作は「シリアライズ」され、アニメーションの完了後に行われます。

問題を提出してください。私たちはそれに対処しようとします。 removeAllはささいなことではないので、少し複雑かもしれません。

+0

ご意見ありがとうございます。発生の詳細を知るためにもう少しデバッグしようとします。 CN1のホームページで問題報告のセクションを見たことがないので、正確にその問題を報告します。 – Lequi

+0

githubプロジェクトのhttp://github.com/codenameone/CodenameOne/issues/にあります –

関連する問題