2016-06-12 1 views
0

이 Fragment (Android)에서 메시지 GR을 보낼 때 나는 GR20과 같은 대답을 받아야하고 textView에 시각화하고 싶습니다. 코드가 작동하지 않습니다. 오류가 표시되지 않지만 일부 방법을 시도했지만 해결할 수 없습니다. 누구든지 나를 도울 수 있습니까?은 textView에 값을 쓸 수 없습니다

package com.example.nicolarinaldi.myapplication; 


    import android.os.Bundle; 
    import android.support.v4.app.Fragment; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.SeekBar; 
    import android.widget.TextView; 

    import java.io.BufferedReader; 
    import java.io.BufferedWriter; 
    import java.io.IOException; 
    import java.io.InputStreamReader; 
    import java.io.OutputStreamWriter; 
    import java.io.PrintWriter; 
    import java.net.InetAddress; 
    import java.net.Socket; 
    import java.net.UnknownHostException; 


    public class TabFragment2 extends Fragment { 


     private Socket socket; 
     // private static final int SERVERPORT = 60000; 
     //private static final String SERVER_IP = "172.17.8.104"; 
     private static final int SERVERPORT = 60000; 
     private static final String SERVER_IP = "192.168.1.3"; 
     int temperatura_termostato = 0; 




     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

      View rootView = inflater.inflate(R.layout.tab_fragment_2, container, false); 
      SeekBar seekBar = (SeekBar)rootView.findViewById(R.id.seekBar); 
      final TextView textView5 = (TextView)rootView.findViewById(R.id.textView5); 
      final TextView textView6 = (TextView)rootView.findViewById(R.id.textView6); 

      try { 
       new Thread(new ClientThread()).start(); 
       PrintWriter out = new PrintWriter(new BufferedWriter(
         new OutputStreamWriter(socket.getOutputStream())), 
         true); 

       out.write("GR"); 
       out.flush(); 
       BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
       String gi = in.readLine(); 
       byte[] temperatura = gi.getBytes(); 
       textView6.setText(String.valueOf(temperatura)); 

      } catch (UnknownHostException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      //textView6.setText(String.valueOf(temperatura)); 
      seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){ 

       @Override 
       public void onProgressChanged(SeekBar seekBar, int progress, 
               boolean fromUser) { 
        // TODO Auto-generated method stub 
        textView5.setText(String.valueOf(progress)); 

       } 

       @Override 
       public void onStartTrackingTouch(SeekBar seekBar) { 
        // TODO Auto-generated method stub 
       } 

       @Override 
       public void onStopTrackingTouch(SeekBar seekBar) { 
        new Thread(new ClientThread()).start(); 
        try { 
         PrintWriter out = new PrintWriter(new BufferedWriter(
           new OutputStreamWriter(socket.getOutputStream())), 
           true); 

         out.write("SR" + temperatura_termostato); 
         out.flush(); 

        } catch (UnknownHostException e) { 
         e.printStackTrace(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 

       } 
      }); 

      return rootView; 
     } 
     class ClientThread implements Runnable { 
      @Override 
      public void run() { 
       try { 
        InetAddress serverAddr = InetAddress.getByName(SERVER_IP); 
        socket = new Socket(serverAddr, SERVERPORT); 
       } catch (UnknownHostException e1) { 
        e1.printStackTrace(); 
       } catch (IOException e1) { 
        e1.printStackTrace(); 
       } 
      } 
     } 


    } 

답변

0

이것은 개별 스레드에서 소켓 연결을 만들기 때문에 발생합니다. 소켓이 읽기/쓰기되기 전에 소켓이 생성되지 않았을 확률이 매우 높습니다. 소켓 연결이 완료되면 알림을받을 독자와 작성자 스레드를 만들어야합니다.

그런 다음 소켓에서 읽고 쓸 수 있습니다.

+0

"SR + temperatura termostato"의 경우이 프로그램이 작동하지만 "GR"의 경우에는 no를 수신합니다. 나는 이유를 이해할 수 없다. –

관련 문제