Дерево удаляется при попытке обновить дерево просмотра
Я имею дерево просмотра в представлении. У меня есть реализованный слушатель дерева провайдера контента. Когда некоторые данные изменяются, дерево уведомляется. Но когда я пытаюсь обновить окно просмотра дерева, появляется сообщение об ошибке, показывающее, что дерево удалено. В чем проблема с моим освежающим действием и почему дерево утилизируется.
Вот фрагмент моего кода.
getChildren()
{
resource.addListener(this);
}
public void dataChangeListener(changeddata)
{
tree.refresh(changedata,true); // Tree shows as disposed.
}
С уважением, Гириш
1 ответ
Все обновления пользовательского интерфейса должны выполняться в потоке пользовательского интерфейса. Вы можете сделать это с помощью следующего кода. Вы также должны проверить, было ли дерево расположено перед вызовом refresh.
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
if (!tree.getTree().isDisposed()) {
tree.refresh(changedData, true);
}
}
});