2016-06-21 40 views
0

我正在写一个脚本,它包含一个等待线程。如果线程被执行,它不会更新屏幕。在脚本中,我将图片更改为另一张图片,但直到我再次按下该按钮才显示。所以主要的问题是:设置不同的图像资源后,我需要更新屏幕。线程中的java更新屏幕

下面是代码:

public void Start(View view) { 

    Runnable r = new Runnable() { 
     @Override 
     public void run() { 
      int i =0; 
      while(i<12) { 
       synchronized (this) { 
        try { 

         Setfoto(i); 
         Thread.sleep(1000); 
         Log.i(TAG, "Begonnen met loop"); 
         Log.i(TAG, "i = " + i); 
         i = i +1; 
        } catch (Exception e) {} 
       } 

      } 
     } 
    }; 

    Thread buckysThread = new Thread(r); 
    buckysThread.start(); 

} 

public void Setfoto(int nummer) { 
    if (nummer == 1) { 
     een.setImageResource(R.drawable.eerster); 
     Log.i(TAG, "Foto 1 wordt rood"); 

    } if(nummer ==2) { 
     twee.setImageResource(R.drawable.eerster); 
     Log.i(TAG, "Foto 2 wordt rood"); 
    } if(nummer ==3) { 
     drie.setImageResource(R.drawable.tweer); 
     Log.i(TAG, "Foto 3 wordt rood"); 
    } 

} 
+0

无法从背景更新UI线。阅读一些关于如何更新用户界面的Android文档,然后您将自行解决。如果没有,至少你可以改善你的问题,而不是犯这些错误。 –

回答

0

你需要有某种方式来UI线程,这是负责更新屏幕上的内容和操作的观点上运行代码。

Activity.runOnUiThread(Runnable)可以被调用。任何放置在那里的代码都将在UI线程上运行。

0

您可以使用runOnUiThreadAsyncTaskThread-Handler来实现你的任务

  1. Activity.runOnUiThread

    runOnUiThread(新的Runnable(){ 公共无效的run(){// 请在UiThread 东西} });

  2. 线程处理器

Communicating with the UI Thread

  • 的AsyncTask
  • AsyncTask Tutorial