2

何かを行うスレッドを (ボタンをクリックした後に) 開始し、いくつかの変数を取得してから、それらの変数を表示する画面をプッシュするアプリが必要です。問題は、画面がそのスレッドを待つことができないことです。アプリを実行するたびに、新しい画面を更新して変数の値を確認する必要があります。どのように対処すればよいですか?メソッドを使用しましたinvokeLater()が、うまくいかないようです。

これが私の最初の画面のコードです:

import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.ButtonField;

public  class MyScreen extends MainScreen implements FieldChangeListener
{

    public MyScreen()
    {      
         super();

         setTitle("MyScreen!");
         ButtonField bf = new ButtonField("Start thread", ButtonField.CONSUME_CLICK) ;
         this.add(bf);

         bf.setChangeListener(this); 
    }

    public void fieldChanged(Field Field, int context) {

       MyThreadClass myThread = new MyThreadClass();
       myThread.start();

       UiApplication.getUiApplication().invokeLater(new Runnable() {
           public void run() {
              UiApplication.getUiApplication().pushScreen(new NewScreen());
          }
       });
    }
}

どこで私は間違えましたか?

4

1 に答える 1

2

これを試して -

MyThreadClass myThread = new MyThreadClass();
myThread.start();

class MyThreadClass implements Runnable {
      public void run() {
          // here - your code for getting variables.

          // After getting your variable , push the screen.
          UiApplication.getUiApplication().invokeLater(new Runnable() {
              public void run() {
                  UiApplication.getUiApplication().pushScreen(new NewScreen());
              }
          });
      }
}
于 2013-05-16T12:34:31.953 に答える