runOnUiThread (новая проблема Runnable () {пунктуация (токен) - PullRequest
6 голосов
/ 08 декабря 2011

Как-то не получается, по мне так и должно быть:

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, он вылетает, так как я пытаюсь адаптировать пользовательский интерфейс из другого потока, но, по крайней мере, без проблем с токенами, есть идеи?

   Timer timer= new Timer();


  timer.schedule(new TimerTask(){

//   runOnUiThread(new Runnable() {

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

    //  });}

  },SplashTime);

Ответы [ 2 ]

10 голосов
/ 08 декабря 2011

Как для TimerTask, так и для Runnable требуется, чтобы вы реализовали метод run, поэтому вам понадобятся два run метода.

Также ваш код будет легче читать, если вы разделите конструкциюЗапускается из конструкции 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 голос
/ 08 декабря 2011

У вас есть избыток "}" до 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...