サーバーコンピューターとAndroidスマートフォン間の通信システムを作成しようとしています。私はついに、仕事の良い結果を得ています。ただし、Android ビューに問題があります。具体的には、拡張子のないクラスからテキストビューのメソッド「.setText()」を使用しようとしています。そのクラスに textview オブジェクトを渡しましたが、メソッド "textview.setText()" は問題なく動作し、UI にも影響しません。コードを下に置くと、より明確に理解し、コードを試す機会が得られると思います。
public class NetworkingActivity extends Activity {
public static String message;
public static EditText editext;
public static TextView textview;
private Connector connector;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void buttonClicked(View v){
editext = (EditText) findViewById(R.id.editText1);
textview = (TextView) findViewById(R.id.textview);
message = editext.getText().toString();
connector = new Connector(NetworkingActivity.this);
connector.start();
}
public void yenile(String respond){
textview.setText(respond);
editext.setText("");
}
public void yenileClicked(View v){
textview.setText(Connector.respond);
editext.setText("");
}
public static class Connector extends Thread{
private static final int PORT = 3588;
private static final String IpAddress = "XXX.XXX.XXX.XXX"; // of course X's have a int value
public static String respond;
private NetworkingActivity activity;
public Connector(NetworkingActivity activity){
this.activity = activity;
}
public void run() {
try {
Socket socket = new Socket(IpAddress, PORT);
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
Scanner scanner = new Scanner(socket.getInputStream());
writer.println(NetworkingActivity.message);
respond = scanner.nextLine();
activity.yenile(respond);
socket.close();
} catch (Exception e) {
}
}
}
}
最後に、もう 1 つお伝えしなければなりません。メソッド YenileClicked() は、ボタンを介して " android:onClick="yenileClicked" " である xml ファイル内のコードによって割り当てられます。問題は、他のクラスがほぼ同じ方法である Yenile(); を続行できないことです。