0
我試圖在我的服務器計算機和我的android智能手機之間創建一個通信系統。最後,我獲得了良好的工作成果。但是,我有一個Android視圖的問題。具體來說,我試圖從一個沒有擴展的類中使用textview的方法「.setText()」。我將textview對象傳遞給該類,但是「textview.setText()」方法沒有任何失敗並且對UI沒有任何影響。讓我來看看代碼,我想你會更清楚地理解,並有機會嘗試代碼。通過另一個類編輯textview
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) {
}
}
}
}
最後,我應該再告訴你一件事。 yenileClicked()方法通過xml文件中的代碼進行分配,該文件是通過按鈕「android:onClick =」yenileClicked「」。問題是其他班級的殘疾能夠繼續使用幾乎相同的方法yenile();
問題是您無法從單獨的線程編輯視圖。使用http://developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable) 所以它看起來像'activity.runOnUIThread(new Runnable {public void run(){activity .yenile(respond);}});' 使您的當前代碼正常工作。我會考慮創建一個接口回調,而不是傳遞整個活動...... –