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();
}
}
}
}
"SR + temperatura termostato"의 경우이 프로그램이 작동하지만 "GR"의 경우에는 no를 수신합니다. 나는 이유를 이해할 수 없다. –