Witam,
Tworzę prostego klienta chat na Androida.
Mój kod:
public class Rejestracja extends AppCompatActivity {
Button b1;
EditText et1;
EditText et2;
EditText et3;
TextView t2;
TextView t3;
TextView t4;
private static final int SERVERPORT = 7000;
private static final String SERVER_IP = "192.168.3.133";
Socket socket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rejestracja);
b1=findViewById(R.id.button);
et1=findViewById(R.id.editText);
et2=findViewById(R.id.editText2);
et3=findViewById(R.id.editText3);
t2=findViewById(R.id.textView2);
t3=findViewById(R.id.textView3);
t4=findViewById(R.id.textView4);
new Thread(new ClientThread()).start();
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strL=et1.getText().toString();
try {
socket = new Socket(SERVER_IP, SERVERPORT);
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),
true);
out.println(strL);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
class ClientThread implements Runnable{
@Override
public void run() {
try {
InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
socket = new Socket(serverAddr, SERVERPORT);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Generalnie problem jest w tym, że w klasie ClientThread jest tworzony obiekt socket. Natomiast w funkcji onClick() mamy odwołanie do obiektu socket, jednak w tym przypadku ma on wartośc null. Jak odwołać się do wywołania socket z klasy wątku w metodzie onClick()?