android set visibility of a button on timer

Viewed 74628

I have an app that shows a disclaimer at the beginning of the program. I want a button to remain invisible for a set amount of time, and then become visible. I set up a thread that sleeps for 5 seconds, and then tries to make the button visible. However ,I get this error when I execute my code:

08-02 21:34:07.868: ERROR/AndroidRuntime(1401): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

How can I count 5 seconds, and then make the button visible? THanks.

Thread splashTread = new Thread() {
           @Override
           public void run() {
            try {
                   int waited = 0;
                   while(_active && (!_ok2)) {
                       sleep(100);
                       if(_active) {
                           waited += 100;
                           if(waited >= _splashTime)
                           {
                            turnButtonOn();
                           }

                       }
                   }
               } catch(InterruptedException e) {
                   // do nothing
               } finally {
                   finish();
                   startActivity(new Intent("com.lba.mixer.Choose"));

               }
    };
    splashTread.start();


      public static void turnButtonOn() {
         okButton.setVisibility(View.VISIBLE);
      }
3 Answers

I found this a Better solution to the problem (button id = but_resend)

define handler

  private Handler handler;

call function in extend class

 showButtons();

define after class

private void showButtons() {
        handler = new Handler();

        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                ((Button) findViewById(R.id.but_resend)).setVisibility(View.VISIBLE);
            }
        }, 20000); // produce 20 sec delay in button visibility


    }

and keep in mind to hide the visibility in the.xml file by

android:visibility="invisible"
Related