私はこのコードを持っています:
@Override
public void onClick(View v) {
if (!connected) {
serverIpAddress = serverIp.getText().toString();
if (!serverIpAddress.equals("")) {
Thread cThread = new Thread(new ClientThread());
cThread.start();
}
}
}
};
private OnClickListener communicateListener = new OnClickListener() {
@Override
public void onClick(View v) {
message = messageServer.getText().toString();
if (!serverIpAddress.equals("")) {
cThread.run();
//Thread cThread = new Thread(new ClientThread());
//cThread.start();
}
}
};
public class ClientThread implements Runnable {
public void run() {
if (socket==null)
connect to the server;
else
do smth else;
}
私が欲しいのは、スレッドを作成する connectListener と、接続を確立するスレッドです。次に、communicationListener をクリックすると、アプリはソケットから読み取るか、ソケットに書き込みます。これを実装する方法がわかりません。
communicateListener の onclick メソッドでどうにかスレッドを再度呼び出す必要がありますか? または、継続的に実行されており、ソケットがnull以外の場合は「他のことを行う」のですか?
run 関数を再度呼び出してみましたが、NullPointerException が発生しました。communicateListener で新しいスレッドを作成するとうまく動作しますが、ボタンをクリックするたびに新しいスレッドを作成したくありません。
ありがとうございました