2013-05-01 94 views
0

所以我在我的Android應用程序中有這些代碼行,wifiScrollViewText是String類型,我設置爲任何要添加到ViewText的消息:wifiScrollViewText通過處理程序... readableNetmask在我的情況是255.255.255.0,而readableIPAddress是10.0.0.11 ...如果我刪除更新2,網絡掩碼將出現在textview中......但是如果我添加更新2代碼行,textview將顯示IP兩次而不是網絡掩碼然後是IPAddress。我認爲解決方案是在啓動第二個處理程序對象之前等待第一次更新完成!更新接口處理程序問題

// Update 1 
wifiScrollViewText = readableNetmask + "\n"; 
handler.post(new UpdateWiFiInfoTextViewRunnable()); 

// Update 2  
wifiScrollViewText = readableIPAddress + "\n"; 
handler.post(new UpdateWiFiInfoTextViewRunnable()); 

可運行:

static public class UpdateWiFiInfoTextViewRunnable implements Runnable { 
    public void run() { 
     wifi_info_textView.append(wifiScrollViewText); 
    } 
} 

回答

1

兩個Runnables不會直到主線程上當前消息/代碼上運行執行完畢,所以由時間兩個Runnables被運行wifiScrollViewText可變分以相同的文字。你需要保持文本的兩件在任何兩個獨立的變量或列表中(如果你打算做多追加),並在Runnable的一次運行彈出他們:

List<String> mUpdates = new ArrayList<String>(); 
// Update 1 
mUpdates.add(readableNetmask + "\n"); 
// Update 2  
mUpdates.add(readableIPAddress + "\n"); 
handler.post(new UpdateWiFiInfoTextViewRunnable()); 

其中:

static public class UpdateWiFiInfoTextViewRunnable implements Runnable { 
    public void run() { 
     for (int i = 0; i < mUpdates.size(); i++) { 
      wifi_info_textView.append(mUpdates.get(i)); 
     } 
     mUpdates.clear(); 
    } 
} 
+0

非常感謝@Luksprog它的工作,我真的很感激它:DDDDDD – spac3hit 2013-05-01 10:27:29

+0

還有一件事我希望你能幫助我:我會張貼另一個問題....謝謝 – spac3hit 2013-05-01 10:30:56