2016-06-21 90 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