2016-01-21 32 views
0

我想要將TextView內容更改爲線程中的計算結果,但執行時會崩潰。這是我的代碼。無法在runOnUiThread中更改UI

new Thread(new Runnable() { 
     public void run() { 
      while (i < 5) { 
       i++; 
      } 
      getActivity().runOnUiThread(new Runnable() { 
       public void run() { 
        TextView txv = (TextView) getView().findViewById(R.id.txvone); 
        Log.d("123","i = "+ i); 
        txv.setText(i);//CRASH!!! 
       } 
      }); 
     } 
}).start(); 

enter image description here

回答

2

你需要一個String類型傳遞給setText()方法。當您傳遞整數類型時,它將執行Rsee : R)文件查找具有指定標識的字符串資源。由於該ID與您的strings.xml文件中的任何項目都不匹配,所拋出的異常是ResourceNotFoundException

像Sree說的,試試下面的代碼,它是有保證的工作。

txv.setText(String.valueOf(i))); 
0

documentation它說setText(int resid)

所以,你爲這個方法傳遞的int值應該是一個資源id(一個來自R.string靜態成員)。這有點令人討厭,但我認爲,Android Studio會在該參數中警告您關於@ResourceId的註釋。

如果您希望將文本設置爲5,則應按照註釋中的建議執行String.valueOf(5)方法調用。