2014-09-10 54 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(""); 
         } 
        });