【问题标题】:Not able to delete a field from a Manager无法从经理中删除字段
【发布时间】:2011-09-19 09:14:47
【问题描述】:

我向水平管理器添加了两个按钮字段,当我尝试从不同线程的管理器中删除相同的按钮时,我得到一个 - 索引超出范围异常。

这是我所做的一个例子--

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);

但还是同样的错误——索引越界异常

【问题讨论】:

  • 你能告诉我你是如何运行线程的吗?我的意思是稍后调用。你必须确保你不能在后台线程上进行 UI 操作。你应该使用事件线程
  • 是的,我稍后在调用填充 ui 时使用调用

标签: blackberry horizontalfieldmanager


【解决方案1】:

你可以使用:

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

瞧!你的 hfm 和新的一样好..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    相关资源
    最近更新 更多