2011-09-04 47 views
2

想到我會與大家分享一些奇怪的代碼,看看我是否做了任何盲目的錯誤。 我已經將一個處理程序傳遞給後臺線程來更新主要活動的UI(我知道這不是最好的方式,但這應該是一個快速而髒的測試應用程序) 基本上,代碼附加一條消息到TextView的,就像這樣:Android處理程序沒有更新文本視圖

    uiHandler.post(new Runnable() { 
        @Override 
        public void run() { 
         Log.i("Text2Server", "Updating log with: " + logput); 
         logTextView.append(logput); 
        } 
       }); 

出現這種情況,每次收到UDP報文,日誌輸出每次完美,但TextView的只在第一次消息更新,或有時根本沒有。

我認爲這是與我的文本視圖有關,但我想我會看看有沒有人見過類似的東西?

謝謝!

P.S.我已經嘗試了基礎知識,比如使用setText()代替append()等。

+0

也有這個問題。它在第一次加載時工作,但重新加載不再工作的活動。 – Zammbi

回答

0

它是否在LogCat中輸出"Text2Server", "Updating log with: " + logput

.post(Runnable r)該runnable放置在隊列中,稍後當附着的線程執行時運行。

也許,處理程序不能訪問UI線程,這個假設也可能是錯誤的。

嘗試另一種方式。

實例化處理程序:

Handler handler = new Handler(){ 

     @Override 
     public void handleMessage(Message msg) {   
     String logPutFromThread=msg.getData().getString("somekey"); 
      Log.i("Text2Server", "Updating log with: " + logPutFromThread); 
      logTextView.append(logPutFromThread); 
     } 

    }; 

,並從該線程的Runnable

Runnable updateActivityUi = new Runnable(){ 

     @Override 
     public void run() { 

     //do something before you send the message 
       Message msg = new Message(); 
       msg.peekData().putString("somekey", logput) 
       handler.sendMessage(msg) 


     }}; 
+0

是的,日誌顯示和textview只是不更新​​。真奇怪。 –

+0

你試過我給你看的方式嗎? –

+0

不,現在嘗試它。將張貼結果,抱歉延誤。 –

相關問題