数据发送回与UI我有这样的AsyncTask,我用它来在互联网上发送聊天信息。问题是,当我执行任务时,什么事都没有发生 - 至少不是在UI上。我怀疑onProgressUpdate()
根本不执行。这个想法是,当任务开始时,一条消息将通过互联网发送,用户界面上的EditText将用新文本更新。这是全班同学:无法从的AsyncTask
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import android.os.AsyncTask;
import android.widget.EditText;
public class Messager extends AsyncTask<SocketAndEditText, Void, Void> {
private MulticastSocket socket;
private EditText host;
private EditText port;
private EditText sendMessage;
private EditText messageBoard;
private InetAddress serverAddress;
private int pt;
private String newConverstion;
private String message;
@Override
protected Void doInBackground(SocketAndEditText... soEd) {
// get the text that they contain and add the new messages to the old ones
//host = soEd[0].getHost();
//port = soEd[0].getPort();
messageBoard = soEd[0].getMessageBoard();
sendMessage = soEd[0].getSendMessage();
message = sendMessage.getText().toString();
String conversation = messageBoard.getText().toString();
newConverstion = conversation.concat("\n[You] ").concat(message);
return null;
}
protected void onProgressUpdate(Integer... progress) {
// make the messages text view editable
messageBoard.setFocusable(true);
messageBoard.setText(newConverstion); // add the new message to the text view
messageBoard.setFocusable(false); // make the messages text view not editable
// erase the text on the second text view that has just been sent
sendMessage.setText("");
sendMessage(message);
}
public void sendMessage(String message) {
// convert the host name to InetAddress
try {
serverAddress = InetAddress.getByName("localhost");
} catch (Exception e) {}
pt = 4456;
// create socket and start communicating
try {
socket = new MulticastSocket(pt);
socket.joinGroup(serverAddress);
} catch (IOException e) {}
// Send message to server
// convert message to bytes array
byte[] data = (message).getBytes();
// create and send a datagram
DatagramPacket packet = new DatagramPacket(data, data.length, serverAddress, pt);
try {
socket.send(packet);
} catch (IOException e) {}
}
}
出了什么问题?
Здрасти,имашлипредставакоеточновкоиметодидасложа? ТезиAsyncTasksнапълномеобъркахасвсичкитеимметодиипараметри。 МеждудруготоможешлидапрепоръчашнякаквочетивозамрежовопрограмираненаАндроид,чеазненамирампочтинищосериозно。 Мерсиипоздрави。 – RegedUser00x 2012-01-29 12:56:21
@ RegedUser00x:我被抓到了,我真的是保加利亚人。我也很喜欢我的语言,并且更喜欢说它。但是,这是社区网站,您应该同意我们的语言,虽然特殊,但不适用于SO的官方语言。翻译你的文章: '嗨,你知道在哪种方法中放置什么? AsyncTask类将我的所有方法都弄糊涂了。顺便说一下,你可以指点我一些书来了解Android中的网络编程,因为我几乎找不到任何东西。 Thanks.' – 2012-01-29 13:34:35