2013-05-01 61 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