android–editText框的计时器:只有创建视图层次结构的原始线程才能触及其视图

android–editText框的计时器:只有创建视图层次结构的原始线程才能触及其视图,第1张

概述我正在尝试使用edittextboxvibrate并在输入错误密码时立即更改颜色finalDrawableoldBackground=findViewById(R.id.email).getBackground();TimerTasktimerTask=newTimerTask(){@Overridepublicvoidrun(){MainActivty.this.findViewById(R.id.p

我正在尝试使用edittext Boxvibrate并在输入错误密码时立即更改颜色

final Drawable oldBackground = findVIEwByID(R.ID.email).getBackground();TimerTask timerTask = new TimerTask() {    @OverrIDe    public voID run() {        MainActivty.this.findVIEwByID(R.ID.password).setBackground(oldBackground);        MainActivty.this.findVIEwByID(R.ID.email).setBackground(oldBackground);    }};Toast.makeText(MainActivty.this , valArray.get(0).toString(), Toast.LENGTH_SHORT).show();findVIEwByID(R.ID.password).setBackgroundcolor(color.RED);findVIEwByID(R.ID.email).setBackgroundcolor(color.RED);Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);v.vibrate(500);Timer timer = new Timer();timer.schedule(timerTask, 1000);

解决方法:

计时器任务在不同的线程上运行. Ui应该在ui线程上更新.

使用runOnUiThread或使用Handler.

          runOnUiThread(new Runnable(){              @OverrIDe              public voID run(){               // update ui here                }           });

处理器

Handler m_handler;Runnable m_handlerTask ;  m_handler = new Handler();   m_handlerTask = new Runnable(){  @OverrIDe   public voID run() {     // do something      m_handler.postDelayed(m_handlerTask, 1000);      }  }; m_handlerTask.run();

您还可以使用CountDown计时器

Countdowntimer in minutes and seconds

总结

以上是内存溢出为你收集整理的android – editText框的计时器:只有创建视图层次结构的原始线程才能触及其视图全部内容,希望文章能够帮你解决android – editText框的计时器:只有创建视图层次结构的原始线程才能触及其视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116040.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存