綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 加入loop讓接收到的數據可以更新顯示在textview

[複製連結] 查看: 1031|回覆: 0|好評: 0
跳轉到指定樓層
樓主
kansas73 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2015-3-5 17:13

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
我想要寫一隻APP可以接收我從client丟出來的資料並且顯示
現在問題在於我只能顯示出我丟出的第一筆資料
而第二筆資料卻無法顯示出來,即使丟出第二筆還是只有顯示第一筆資料
  1. try{
  2.                 //建立serverSocket
  3.                 serverSocket = new ServerSocket(8080);
  4.                 //等待連線
  5.                 while (true) {
  6.                     //接收連線
  7.                     Socket client = serverSocket.accept();
  8.                     handler.post(new Runnable() {
  9.                         public void run() {
  10.                             test.setText("Connected.");//如果建立成功 顯示connected
  11.                         }
  12.                     });
  13.                     
  14.                     DataInputStream in = new DataInputStream(client.getInputStream());//取得dataoutputstream並放置於in                                      
  15.                             while(in!=null){       //當in裡面有值的時候執行以下的動作
  16.                                     //接收資料   
  17.                                 byte[] re = new byte[6];//先開個re的陣列大小為6
  18.                                 in.read(re);                  //並把in讀進來放進re
  19.                                 short tmp[] = {(short) (0xff & re[0]),        //tmp負責處理我所丟過來的封包格式
  20.                                                            (short) (0xff & re[1]),   //例如 傳送0x70在textview上則顯示70
  21.                                                            (short) (0xff & re[2]),   //以此類推
  22.                                                            (short) (0xff & re[3]),
  23.                                                            (short) (0xff & re[4]),
  24.                                                            (short) (0xff & re[5]),};
  25.                                 int ddata0,ddata1,ddata2,ddata3,ddata4,ddata5; //將處理完的封包格式放進來               
  26.                                 ddata0=tmp[0];
  27.                                 ddata1=tmp[1];
  28.                                 ddata2=tmp[2];
  29.                                 ddata3=tmp[3];
  30.                                 ddata4=tmp[4];
  31.                                 ddata5=tmp[5];                     
  32.                                 dd0=Integer.toHexString(ddata0);  //格式轉換就不說明了
  33.                                 dd1=Integer.toHexString(ddata1);
  34.                                 dd2=Integer.toHexString(ddata2);
  35.                                 dd3=Integer.toHexString(ddata3);
  36.                                 dd4=Integer.toHexString(ddata4);
  37.                                 dd5=Integer.toHexString(ddata5);
  38.                                 handler.post(new Runnable() {
  39.                                     public void run() {
  40.                                             test2.setText(dd0+dd1+dd2+dd3+dd4+dd5);//最後在這邊讓test2這個textview顯示出來!
  41.                                     }
  42.                                 });
  43.                             }
  44.                     }
  45.             }catch(IOException e){
  46.                 //以下如果有錯誤就顯示出建立失敗!!!!
  47.                 handler.post(new Runnable() {
  48.                     public void run() {
  49.                         test.setText("建立socket失敗");
  50.                     }
  51.                 });
  52.             }
複製代碼


我竭盡所能地將我的code註解了一下
不知道我的理解有沒有錯誤!
我丟出來的資料是 0x70,0x60,0x50,0x40,0x30,0x20
那我再textview上面要顯示出  70 60 50 40 30 20
第一筆都能成功顯示,但第二筆就沒有辦法了
我自己有想過是否in裡面沒有資料(這也是版有給我的一些意見)
但是如果in沒有資料那第一筆資料也沒有辦法顯示吧...我是這麼想的不知道這個想法有沒有錯誤呢?
然後再來是後來我有在別的論壇上發問
他們是說in沒有改變所以...顯示都一樣
但我不知道要怎麼改變
不是只要丟出不同資料她會自己更新嗎?
麻煩版友們幫我解答了謝謝你們由衷感謝
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則