2014-09-10 59 views
1

我想清除EditText,例如,從上次編輯過去5秒。我向EditText添加了一個textChangedListener。 textChangedListener然後簡單地使用了一個Timer,它嘗試在run()方法中清除EditText。但是,應用程序崩潰,因爲根據調試器,EditText.setText(「」)被從「錯誤的線程」調用。那麼,實現這種行爲的最佳方式是什麼?Android:如何在超時時清除EditText?

我有一個Qt背景,我不能相信這是如此艱難的Android :) Qt和C++ 11實現清除超時時間的文本編輯部件就像3行代碼。

+0

顯示您在最小可行樣本中的代碼,以便我們可以查看此代碼。 – Archlight 2014-09-10 14:24:03

回答

1

問題是Timer運行在後臺線程!=從UI線程。作爲快速解決方案,您可以實例化和Hander並使用postDelayed方法。可運行的將ru在Ui Thread上,延遲後

+0

感謝您的指針!我設法使它與Handler和postDelayed()一起工作。我不確定取消積極的回調是否正常工作,但這是另一個問題。 – user2061057 2014-09-10 14:48:55

0

我不確定這是否能解決您的問題,但您可以嘗試編輯您的定時器或線程中的編輯文本。

activity.runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          EditText.setText(""); 
         } 
        });