Android 台灣中文網

打印 上一主題 下一主題

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

[複製連結] 查看: 1185|回覆: 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)
回覆

使用道具 舉報

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

本版積分規則