それ自体にいくつかのビューを含むカスタムビューがあります。このコンテナビュー内のビューの1つがクリックされると、これもコンテナビュー内のTextViewを毎秒更新する必要がある「タイマー」スレッドを実行するように作成しました。TextViewを毎秒更新したいときに問題が発生します。どうやら、思ったほど簡単ではなかったようです。このようにコンテナビュー内にRunnableを実装し、ボタンがクリックされてタイマーを開始したときにスレッドを実行しました。
public void run() {
while(runnning) {
// if one second has passed, update the Textview
}
}
典型的なcannot-touch-views-outside-hierarchy例外が発生します。これは、基本的にUIスレッドで実行されていないことを意味します。post(Runnable)
スレッドの最後まで1秒間更新するのを待ちたくないので、ここでは使用しません。また、アクティビティ全体をそれ自体に渡して実行することも実用的ではありませんrunOnUiThread(Runnable)
。それで、誰かが私がこれをどうやってやるのか教えてもらえますか?誰かが説明が必要な場合は、私に知らせてください!