ハンドラの仕組みを理解するための例を作成しようとしています。コードbelwoに示されているように、私は永続的に実行され、変数iをインクリメントするworkerThreadを作成しました。 run()メソッド内で、ハンドラクラスの本文に示すように、インクリメントされた変数の値をTextViewに渡したいとします。sendMessage()が定義されていません
問題は、「新しいハンドラ()」であり、「handler.sendMessage(m)は」赤
でマークされた行は、私はこの問題に
を解決する方法を教えてください、ですMainActivity
public class MainActivity extends AppCompatActivity {
private final static String TAG = MainActivity.class.getClass().getSimpleName();
private TextView mtvIncr = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.mtvIncr = (TextView) findViewById(R.id.tvValue);
new WorkerThread().start();
}
Handler handler =new Handler() {//ERROR
@Override
public void handleMessage(Message msg) {
int sentInt = msg.getData().getInt("what");
mtvIncr.setText("r:"+Integer.toString(sentInt));
}
};
class WorkerThread extends Thread {
private int i = 0;
android.os.Handler mHandler = null;
@Override
public void run() {
super.run();
Looper.prepare();
while(true) {
Log.d(TAG, SubTag.bullet("WorkerThread", "i: " + (i++)));
SystemClock.sleep(1000);
Message m = new Message();
Bundle b = new Bundle();
b.putInt("what", i); // for example
m.setData(b);
handler.sendMessage(m);//ERROR
}
}
}
}
可能な重複します(http:// stackoverflowの.com/questions/36215126/myhandler-obtainmessage-is-not-in-service-in-in-android) –
私も同じ質問だと信じています。 – W0rmH0le