5

Bằng cách nào đó nó không hoạt động, theo tôi nó phải được điều này:runOnUiThread (new Runnable() {dấu chấm câu (token) vấn đề

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

Bất kỳ ai bất kỳ ý tưởng nơi tôi đang thiếu một cái gì đó

NHẬN XÉT CHÍNH SÁCH Tôi biết vấn đề ngớ ngẩn, hoặc có thể tôi đang làm điều gì đó không thể, nhưng tôi đã thử tất cả các khả năng hợp lý.Vì vậy, có thể thiếu một điều gì đó hoặc tôi đang cố gắng làm điều gì đó không thể. Tôi đang cố gắng sử dụng followi ng mã, nhưng cung cấp cho các vấn đề mã thông báo:

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

    runOnUiThread(new Runnable() { 

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

     });} 

    },SplashTime); 

Nếu tôi chặn ra runOnUiThread nó bị treo kể từ khi tôi đang cố gắng để thích nghi với giao diện người dùng từ thread khác, nhưng ít nhất không có vấn đề thẻ, ai bất kỳ ý tưởng ?:

Timer timer= new Timer(); 


    timer.schedule(new TimerTask(){ 

// runOnUiThread(new Runnable() { 

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

    // });} 

    },SplashTime); 
+0

bạn đã thử sử dụng Activity_name.this.runOnUiThread (...) chưa? –

+0

Hi Lalit, đưa ra cùng một vấn đề, nhật thực cho tôi nhận xét rằng tôi nên thêm hoặc xóa; và} {v.v. Nếu không có thứ gì bị chặn, chú thích tôi nhận được là ở dòng timer.schedule và SplashTime ở cuối. Có vẻ như Eclipse không nhận ra Task Timer khi runOnUiThread được thêm vào .. – Diego

Trả lời

9

Cả TimerTask và Runnable đều yêu cầu bạn triển khai phương pháp chạy, vì vậy bạn sẽ cần hai phương thức run.

Ngoài ra, mã của bạn sẽ dễ đọc hơn nếu bạn tách riêng việc xây dựng Runnable khỏi việc xây dựng 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

+, tôi đã bỏ lỡ 'run()' cho 'TimerTask' – Vladimir

1

Bạn đã vượt quá "}" trước SplashTime. Bạn đã nhận xét một lần mở "{" và hai đóng "}", vì vậy mã ban đầu của bạn có một "}" không được yêu cầu.

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