android,我想实现循环更新textview,为什么出错?怎么改成正确的?
packagecom.example.test_updateui;importandroid.os.Bundle;importandroid.os.Handler;imp...
package com.example.test_updateui;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView textview;
private Button button;
/*private Handler handler;*/
String zhouyu;
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textview=(TextView)findViewById(R.id.chatmessage);
button=(Button)findViewById(R.id.start);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) {
userthread zy=new userthread();
zy.start();
}
});
}
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg){
if(msg.what==0x101){
textview.setText(zhouyu);
}
}
};
//线程
class userthread extends Thread{
userthread(){
//this.meg = meg;
}
public void run(){
Message m=new Message();
m.what=0x101;
while(i<1000)
{
zhouyu=i+"";
/*userthread zy=new userthread();
zy.start();*/
/*textview.setText(zhouyu);*/
handler.sendMessage(m);
i=i+1;
}
//textview.setText(jindu);
}
}
} 展开
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView textview;
private Button button;
/*private Handler handler;*/
String zhouyu;
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textview=(TextView)findViewById(R.id.chatmessage);
button=(Button)findViewById(R.id.start);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) {
userthread zy=new userthread();
zy.start();
}
});
}
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg){
if(msg.what==0x101){
textview.setText(zhouyu);
}
}
};
//线程
class userthread extends Thread{
userthread(){
//this.meg = meg;
}
public void run(){
Message m=new Message();
m.what=0x101;
while(i<1000)
{
zhouyu=i+"";
/*userthread zy=new userthread();
zy.start();*/
/*textview.setText(zhouyu);*/
handler.sendMessage(m);
i=i+1;
}
//textview.setText(jindu);
}
}
} 展开
3个回答
展开全部
在你的setText之后再调用一下
textview.invalidate();
就可以强制刷新界面了。
另外 因为你的线程循环中没有sleep,所以更新非常快 你也看不到过程的,加上sleep(1000)。
textview.invalidate();
就可以强制刷新界面了。
另外 因为你的线程循环中没有sleep,所以更新非常快 你也看不到过程的,加上sleep(1000)。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把你的while循环写到 public void handleMessage(Message msg){
if(msg.what==0x101){
textview.setText(zhouyu);
}
}这个里面就行了试试
if(msg.what==0x101){
textview.setText(zhouyu);
}
}这个里面就行了试试
追问
改了,只显示最后一个值啊,没有动态效果啊
追答
稍等我帮你看看API
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个while循环瞬间就跑完了,所以直接看到最后一个值。。。。 要想看到变化效果中间加时间间隔
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询