private Handler workerHandler; // instance variable of UIThread
onCreate()メソッド内
WorkerThread wt = new WorkerThread();
workerHandler = wt.getHandler();
wt.start();
以下のSeekBarリスナーメソッドを使用して、WorkerThreadのキューにメッセージを送信します
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
tv.setText(String.valueOf(progress));
workerHandler.sendMessage(workerHandler.obtainMessage(99,String.valueOf(progress)));
}
ワーカースレッド:
private Handler handler;
//getHandler() method
public void run() {
super.run();
Looper.prepare();
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 99)
Log.d("RTR","Message from Main Thread:"+(String)msg.obj);
}
};
Looper.loop();
しかし、私が変更するSeekBar
と、「プログラムが残念ながら停止しました」というメッセージが表示されます。理由は何でしょうか?
更新:問題はワーカースレッドのハンドラーにありますworkerHandler
。それはまだnull
です。何故ですか?