私はAndroidにソケットプログラムを持っています。クライアント側のボタンをクリックしてコマンドまたはテキストメッセージを送信したいと思います。押されたボタンに応じて異なるテキストメッセージを送信します。しかし、PrintWriterから「out」PrintWriterオブジェクトに関するコンパイラエラーメッセージが表示されますout = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket .getOutputStream()))、true);
onclickリスナー内でこの「out」を使用する場合、このコンパイラエラーを修正するにはどうすればよいですか?修正としてコンパイラーが推奨するように、これを最終的な変数にしたくありません。
これは、クライアントからサーバーのAndroidアプリにソケットでマッサージを送信するためのrun()メソッド内の2つのonclickボタンリスナーを含む以下に示すコードです。
sendAボタンをクリックすると、テキストメッセージ「testA」が送信され、sendBボタンをクリックすると、テキストメッセージ「testB」が送信されます。
public void run() {
try {
InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
Log.d("ClientActivity", "C: Connecting...");
Socket socket = new Socket(serverAddr, 8080);
connected = true;
while (connected) {
try {
Log.d("ClientActivity", "C: Sending command.");
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket
.getOutputStream())), true);
sendA.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
out.println("testA");
}
});
sendB.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
out.println("testB");
}
});
// where you issue the commands
// out.println("testX");
Log.d("ClientActivity", "C: Sent.");
} catch (Exception e) {
Log.e("ClientActivity", "S: Error", e);
}
}
socket.close();
Log.d("ClientActivity", "C: Closed.");
} catch (Exception e) {
Log.e("ClientActivity", "C: Error", e);
connected = false;
}
}
}