5

Jakoś to nie działa, według mnie to powinno być tak:?runOnUiThread (nowa Runnable() {interpunkcyjny (żeton) Emisja

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() 

ktoś jakiś pomysł, gdzie jestem czegoś brakuje

FORMALNY KOMENTARZ Znam głupi problem, a może robię coś niemożliwego, ale spróbowałem wszystkich logicznych możliwości, więc prawdopodobnie czegoś brakuje lub staram się zrobić coś, co nie jest możliwe Czy możesz pomóc? Próbuję użyć followi Kod ng, ale daje symboliczne kwestie:

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

    runOnUiThread(new Runnable() { 

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

     });} 

    },SplashTime); 

Gdybym blokują się runOnUiThread się zawiesi, ponieważ staram się dostosować UI z innego wątku, ale przynajmniej nie żeton problem, każdy jakiś pomysł ?:

Timer timer= new Timer(); 


    timer.schedule(new TimerTask(){ 

// runOnUiThread(new Runnable() { 

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

    // });} 

    },SplashTime); 
+0

czy próbowałeś używać Activity_name.this.runOnUiThread (...)? –

+0

Witaj Lalit, daje ten sam problem, zaćmienie daje mi komentarz, który powinienem dodać lub usunąć; i} {itd. Bez zbędnych rzeczy komentarz, który otrzymuję, jest na linii z timer.schedule i SplashTime na końcu. Wygląda na to, że Eclipse nie rozpoznaje zadania Timera po dodaniu runOnUiThread. – Diego

Odpowiedz

9

Zarówno TimerTask i Runnable wymaga implementacji metody run, więc trzeba dwa run metod.

Również twój kod będzie łatwiejszy do odczytania, jeśli oddzielisz konstrukcję Runnable od konstrukcji 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); 
+0

+ Brakowało mi 'run()' dla 'TimerTask' – Vladimir

1

Masz nadmiar "}" przed SplashTime. Skomentowałeś jedno otwarcie "{" i dwa zamknięcie "}", więc oryginalny kod ma jeden niepotrzebny "}".

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);