我想在Android编程中获得一些帮助。
我有一个接收UDP包的小程序,我尝试将消息写入TextView
,但它不起作用。你知道这段代码有什么问题吗? Android Studio中没有任何红色下划线,但是当它获得一个包时,它既不会做任何事情,也不会崩溃。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
UDPReciever();
}
public void UDPReciever(){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try{
int port = 55777;
DatagramSocket serverSocket = new DatagramSocket(port);
byte[] receiveData = new byte[8];
byte[] sendData = new byte[8];
while(true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String( receivePacket.getData());
TextView textView = (TextView) findViewById(R.id.editText);
textView.setText(sentence);
}
} catch (Exception e) {
}
}
});
thread.start();
}
}
答案 0 :(得分:2)
这是因为更新TextView
的代码不会在UI线程上执行。要在UI线程上执行代码,最简单的方法是使用runOnUiThread()
的{{1}}方法,例如:
Activity