runOnUiThread(new Runnable(){punctuation(token)issue

时间:2011-12-08 11:23:08

标签: android runnable timertask punctuation android-runonuithread

不知怎的,它不起作用,据我说它应该是这样的:

public void Splash(){
    Timer timer= new Timer();

    timer.schedule(new TimerTask(){ 

    MexGame.this.runOnUiThread(new Runnable() {

      public void run(){
      SplashImage.setImageDrawable(aktieknop);
      } //Closes run()

      }); //Closes runOnUiThread((){})

  },SplashTime); //Closes the Timeratask((){})

} //closes Splash()

有人知道我遗失了什么吗?

正式评论 我知道愚蠢的问题,或者说我做的事情不可能,但我尝试了所有合乎逻辑的可能性。所以可能遗漏了一些东西,或者我正在尝试做一些不可能的事情。 你能帮帮我吗? 我正在尝试使用以下代码,但这会产生令牌问题:

 Timer timer= new Timer();
   timer.schedule(new TimerTask(){

     runOnUiThread(new Runnable() {

      public void run(){
      SplashImage.setImageDrawable(aktieknop);}

      });}

  },SplashTime);

如果我阻止runOnUiThread,它崩溃了,因为我试图从另一个线程调整UI,但至少没有令牌问题,任何人都有任何想法?:

   Timer timer= new Timer();


  timer.schedule(new TimerTask(){

//   runOnUiThread(new Runnable() {

      public void run(){
      SplashImage.setImageDrawable(aktieknop);}

    //  });}

  },SplashTime);

2 个答案:

答案 0 :(得分:9)

TimerTask和Runnable都要求您实现run方法,因此您需要两个run方法。

如果将Runnable的构造与TimerTask的构造分开,您的代码也会更容易阅读。

   final Runnable setImageRunnable = new Runnable() {
        public void run() {
             splashImage.setImageDrawable(aktieknop);
        }
    };

    TimerTask task = new TimerTask(){
        public void run() {
            getActivity().runOnUiThread(setImageRunnable);
        }
    };

    Timer timer = new Timer();
    timer.schedule(task, splashTime);

答案 1 :(得分:1)

SplashTime之前你有多余的“}”。您已经评论了一个打开“{”和两个结束“}”,因此您的原始代码有一个不需要的“}”。

Timer timer= new Timer();
timer.schedule(new TimerTask(){
        runOnUiThread(new Runnable() {
            public void run(){
                SplashImage.setImageDrawable(aktieknop);
            }   //closes run(){}         
        });     //closes runOnUiThread( Runnable(){ }); 
    },          //closes TimerTask(){}
    SplashTime);