0

水平マネージャーに2つのボタンフィールドを追加しましたが、別のスレッドのマネージャーから同じものを削除しようとすると、-インデックスの範囲外の例外が発生します。

これが私がしたことの例です-

hfm.add(button1);
hfm.add(button2);
layout.add(hfm);

// on clicking button it starts a different thread which
// tries to delete the two buttonFields from the manager.

fieldChanged(Field field1,int arg1) {
    if(field1==button1) {
        populateUI();//This function starts a new Thread
    }
}

populateUI() {
    //...............//
    run() {
        //...............//
        hfm.deleteAll();//this line gives an exception whereas
                        //on applying debug it shows field count as 2 
    }
}

では、フィールドが含まれていてもエラーが表示されるのはなぜですか?残りはすべて正常に機能しています。

個別に削除してみました...

hfm.delete(0);
hfm.delete(1);

しかし、それでも同じエラー-範囲外のインデックス例外

4

1 に答える 1

1

使用できます:

UiApplication.getUiApplication().invokeLater(new Runnable() {
  public void run() {   
  HorizontalFieldManager newHfm = new HorizontalFieldManager();
  replace ( hfm , newHfm );
  }
});

そして出来上がり!あなたのhfmは新品同様です..

于 2012-04-02T04:13:15.897 に答える