现成中更新TextView的状态,报错,求解! 本帖最后由 ol_beta 于 2011-01-16 14:26:21 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 完整代码:public class ProcessBar extends Activity { private ProgressBar processBarOne; private Button btn; private TextView text; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); processBarOne=(ProgressBar) findViewById(R.id.processBarOne); btn=(Button) findViewById(R.id.btn); btn.setText("开始!"); text=(TextView) findViewById(R.id.text); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { while(!Thread.interrupted()){ try { TimeUnit.MILLISECONDS.sleep(500); } catch (InterruptedException e) { } int currentProcess=processBarOne.getProgress(); text.setText("已完成"+currentProcess+"%!"); if(currentProcess>=processBarOne.getMax()){ text.setText("恭喜!全部完成!"); return; } processBarOne.incrementProgressBy(1); } } }).start(); } }); }} 线程吧不是这样处理的,我也不是太明白,就是你启动一个线程,发消息,有一个handler接收消息,然后处理,android的线程好像是这样处理的。去网上搜搜例子就知道了。 UI更新不能放在非主线程中做,要用handler1.run中new一个handler2.run中需要更新时调用handler.sendmessage方法发送指定信息3.handler的handlemessage方法中根据参数msg来处理指定消息,(比如text.setText) 也可以适应activity中的runOnUiThread或view里的post和postDelayed 错误已经写的很清楚了Only the original thread that created a view hierarchy can touch its views.只有主线程才能更新和显示UI 。可以通过其他线程给handler发消息来更新UI Android4.1 GMS包哪有下载? android webview 求解 Gallery 中用按钮切换图片问题 如何实现Gallery和ImageSwitcher的同步??? 一个有关android界面的问题 android客户端与服务端传递数据 如何做一个程序管理器添加到指定位置上,点击红色图片出来程序列表后怎么选择及添加到图片1中 android使用sqlite创建的数据库在手机上可以找到吗? android,view的重绘 有人知道怎么修改sharesdk框架的分享界面的样式吗? 数据库中读取数据加入listview中设置格式出问题了,求帮忙 读取联系人号码问题。
private ProgressBar processBarOne;
private Button btn;
private TextView text;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
processBarOne=(ProgressBar) findViewById(R.id.processBarOne);
btn=(Button) findViewById(R.id.btn);
btn.setText("开始!");
text=(TextView) findViewById(R.id.text);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
while(!Thread.interrupted()){
try {
TimeUnit.MILLISECONDS.sleep(500);
} catch (InterruptedException e) {
}
int currentProcess=processBarOne.getProgress();
text.setText("已完成"+currentProcess+"%!");
if(currentProcess>=processBarOne.getMax()){
text.setText("恭喜!全部完成!");
return;
}
processBarOne.incrementProgressBy(1);
}
}
}).start();
}
});
}
}
1.run中new一个handler
2.run中需要更新时调用handler.sendmessage方法发送指定信息
3.handler的handlemessage方法中根据参数msg来处理指定消息,(比如text.setText)
Only the original thread that created a view hierarchy can touch its views.只有主线程才能更新和显示UI 。
可以通过其他线程给handler发消息来更新UI