0

これは以前の投稿にリンクされています: 私のレイアウトは次のようになります:

入力テキスト (EditText)

ボタン

出力テキスト (TextView)

タスク: ユーザーが入力を入力し、ボタンをクリックすると、出力テキストが表示されます。ボタンをクリックしてから(および出力テキストが表示されてから)約10秒後に入力と出力が消えるようにする必要があります。

現在、TextView に「TextWatcher」を追加できません。最初に、TextWatcherを持つことができるinputTextでHandlerを使用しようとしました。しかし、どういうわけか、ハンドラーはバックグラウンドで常に実行され続けており、それを「キャンセル」することはできません。

そこで、タイマーの使用に切り替えました。ボタンの onCick() メソッドでメソッドを使用しました。

onClick(){
...
    eraseText();
....
}

public void eraseText(){

TimerTask task = new TimerTask() {
            public void run() {
               inputText.setText("");
               outputText.setText("");
            }
        };
        Timer timer = new Timer();
        timer.schedule(task, 1000,10000);
}

そして 10 秒後に timer.cancel() を呼び出したいと思います (しかし、どこかわかりません!!) 問題は、UI スレッドのみがビューを変更できるというエラーが表示されることです。どうすればこれを行うことができますか?

ありがとう

4

4 に答える 4

0

まず、Timer後でキャンセルできるように、オブジェクトへの参照を (クラスのフィールドとして) 保持します。

次に、postビューのメソッドを使用して、UI スレッドでコードを実行します。

于 2013-07-09T09:07:37.657 に答える