Дерево удаляется при попытке обновить дерево просмотра

Я имею дерево просмотра в представлении. У меня есть реализованный слушатель дерева провайдера контента. Когда некоторые данные изменяются, дерево уведомляется. Но когда я пытаюсь обновить окно просмотра дерева, появляется сообщение об ошибке, показывающее, что дерево удалено. В чем проблема с моим освежающим действием и почему дерево утилизируется.

Вот фрагмент моего кода.

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);
            }
        }
    });
Другие вопросы по тегам