简体   繁体   English

我遇到什么错误? Android计时器错误

[英]What kinda error am I getting? Android Timer Error

I don't understand why I am getting this Error. 我不明白为什么会收到此错误。 I have been looking around at different codes and I used this Timer one because I don't know how to use Java Timers quite frankly and now it just crashes my app.. Any help please? 我一直在寻找不同的代码,我使用了这个Timer,因为我不坦率地说不知道如何使用Java Timer,现在它使我的应用程序崩溃了。

timer.schedule(new TimerTask() {
        public void run() {

            findViewById(R.id.progressBar1).setVisibility(View.GONE);
            findViewById(R.id.loadingn).setVisibility(View.GONE);

            findViewById(R.id.tuser).setVisibility(View.VISIBLE);
            findViewById(R.id.tpass).setVisibility(View.VISIBLE);
            loginbutton.setVisibility(View.VISIBLE);
            findViewById(R.id.username).setVisibility(View.VISIBLE);
            findViewById(R.id.pass).setVisibility(View.VISIBLE);
            timer.cancel();
        }
    }, 5000, 5000);

I forgot... Here is the Error(s) code: 我忘记了...这是错误代码:

12-24 05:53:19.639: E/AndroidRuntime(9887):     FATAL EXCEPTION: Timer-0
12-24 05:53:19.639: E/AndroidRuntime(9887):     android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
12-24 05:53:19.639: E/AndroidRuntime(9887):     at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4176)
12-24 05:53:19.639: E/AndroidRuntime(9887):     at android.view.ViewRootImpl.invalidateChild(ViewRootImpl.java:749)
12-24 05:53:19.639: E/AndroidRuntime(9887):     at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:805)
12-24 05:53:19.639: E/AndroidRuntime(9887):     at android.view.ViewGroup.invalidateChild(ViewGroup.java:4005)
12-24 05:53:19.639: E/AndroidRuntime(9887):     at android.view.View.invalidate(View.java:8591)
12-24 05:53:19.639: E/AndroidRuntime(9887):     at android.view.View.setFlags(View.java:6718)
12-24 05:53:19.639: E/AndroidRuntime(9887):     at android.view.View.setVisibility(View.java:4632)
12-24 05:53:19.639: E/AndroidRuntime(9887):     at info.david.statusbar.MainActivity$1.run(MainActivity.java:43)
12-24 05:53:19.639: E/AndroidRuntime(9887):     at java.util.Timer$TimerImpl.run(Timer.java:284)

use runOnUiThread for Accessing Ui elements from TimerTask as : 使用runOnUiThread通过以下方式从TimerTask访问Ui元素:

timer.schedule(new TimerTask() {
   public void run() {
     Your_Current_Activity.this.runOnUiThread(new Runnable() 
         {
           public void run() 
            {

                   // access UI here
            }

      });
    }
 }, 5000, 5000);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM