0

ビューにツリービューアがあります。ツリー コンテンツ プロバイダーへのリスナーを実装しました。一部のデータが変更されると、ツリーに通知されます。しかし、ツリービューアを更新しようとすると、ツリーが破棄されたことを示すエラー メッセージが表示されます。私のさわやかなアクションの問題と、ツリーが破棄される理由は何ですか。

これが私のコードのスニペットです。

getChildren()
{
     resource.addListener(this);
}

public void dataChangeListener(changeddata)
{
     tree.refresh(changedata,true); // Tree shows as disposed.
}

よろしく、ギリッシュ

4

1 に答える 1

3

UI に対するすべての更新は、UI スレッド内で行う必要があります。次のコードでそれを行うことができます。また、refresh を呼び出す前に、ツリーが破棄されているかどうかを確認する必要があります。

    Display.getDefault().asyncExec(new Runnable() {
        @Override
        public void run() {
            if (!tree.getTree().isDisposed()) {
                tree.refresh(changedData, true);
            }
        }
    });
于 2012-07-03T08:17:36.620 に答える