1

次のようなスレッドがあります。

    startButton.setChangeListener(new FieldChangeListener() {
        public void fieldChanged(Field arg0, int arg1) {

                    Thread thread = new Thread(){
                        public void run() {
                            uploadFile();
                        }
                    };
                    thread.start();
                }
            //});

    });

uploadFileメソッドにはlabel_up_result.setText(result);IllegalStateException.

label_up_resultは次のように定義されます。final LabelField label_up_result=new LabelField("", LabelField.FIELD_LEFT);

何が問題になる可能性がありますか? どうすれば修正できますか?

4

2 に答える 2

4

問題は、ワーカー スレッドから UI を更新しようとしている可能性があります。2 つのアプローチがあります。イベント ロックで同期できます。

synchronized(UiApplication.getUiApplication().getEventLock())) {
    label_up_result.setText(result);
}

またはRunnable、UI スレッドで実行する を作成できます。

UiApplication.getUiApplication().invokeLater(new Runnable() {
    public void run() {
        label_up_result.setText(result);
    }
});
于 2012-10-18T17:40:22.310 に答える
-2

ブラックベリーについてはわかりませんが、通常は ui-thread で ui-actions を実行する必要があります。SwingUtilities.invokeLaterJavaSE でその機能を提供します。 http://www.java2s.com/Code/Java/Swing-JFC/Swinginvokelater.htm

于 2012-10-18T17:39:32.507 に答える