我不明白为什么result= Flight.objects.filter(destination__icontains=destination,
date_options__pk=request.session.pop('date1_pk'))
对setText
没有任何作用,我似乎根本没有收到任何错误。
我尝试设置文本的一个原因是我正在尝试查看是否成功建立了与服务器的连接。
这是我的代码:
TextView
答案 0 :(得分:1)
您正在操纵非UI线程上的观看次数。相反,您应该使用AsyncTask
或调用debug2Lbl.post
方法在 UI线程上注入您的更改。
答案 1 :(得分:1)
这是因为你没有在ui thread设置文本。这意味着你的启动线程无法执行一些ui命令,如setText,notifyDataSetChanged ....
有几种解决方案:
1 - 复制此代码而不是debug2Lbl.setText("已成功发送消息:" + text +"到服务器");
Handler mhandler=new Handler(Looper.getMainLooper);
mhandler.post(new Runnable() {
@Override
public void run() {
debug2Lbl.setText("Successfully sent message : "+ text + " to server");
}
});
在uiThread.it上运行你的setText:
YourActivityName.this.runOnUiThread(new Runnable() {
@Override
public void run() {
debug2Lbl.setText("Successfully sent message : "+ text + " to server");
}
});
并在catch状态下为setText执行此操作。 注意:我也提供你阅读同步课程。
别忘了检查是否有效答案;)
答案 2 :(得分:0)
正如@waqaslam所说,你无法使用AsyncTask或其他Thread之类的非UI线程设置UI项目。
以下是您在setText
内使用AsyncTask
的方式摘要。
runOnUiThread(new Runnable() {
@Override
public void run() {
debug2Lbl.setText("Successfully sent message : "+ text + " to server");
}
});
答案 3 :(得分:0)
这样做:
runOnUiThread(new Runnable() {
@Override
public void run() {
debug2Lbl.setText("yourtext");
}
});