public class LogoActivity extends Activity {
/** Called when the activity is first created. */
Element el = new Element(this);
TextView txtTextView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logo);
txtTextView = el.TextView(R.id.test);
txtTextView.setText("tttt");//这个可以
Util.setTimeout(new Runnable() {
public void run() {
// TODO Auto-generated method stub
setText("fdsafdsa"); //这个就不行了..不明白为什么啊
Util.log("-------> " + txtTextView.getText().toString()); //这个也显示
}
}, 3000);
}
public void setText(String txt){
txtTextView.setText(txt);
}
//下面是setTimeout的实现 public static Timer setTimeout(final Runnable obj, long delay){
final Timer t = new Timer();
t.schedule(new TimerTask(){
public void run() {
obj.run();
t.cancel();
}
}, delay);
return t;
}
日志也输出了,可是界面没变化 为什么啊, java看来比js要麻烦多了啊....
解决方案 »
- 切换主题,通过apk格式,为什么textview的背景颜色和字体颜色问题
- Android做一个小软件 屏幕太小 软件太大显示不是太好 怎样让屏幕可以滑动来把我的软件显示完全
- 大家看看这段代码有问题吗?为什么bufferSize>0,但是返回的oBos.toByteArray()为空呢?
- 用SharedPreferences存储数据报错!
- 哪位写过Android关于多线程的应用?
- 下载的android App源码编译错误
- 我的手机总是卡我改怎么解决
- 关于listview(关于和外部组件间隙的),技术达人进
- 使用ACTION_DATE_CHANGED动态注册广播无法监听系统日期的改变
- 就像在windows系统下 借助汇编在exe文件中插入代码,android可不可以实现类似功能
- 如何监听软键盘的弹出和退出
- SoundPool播放wav和ogg的问题
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logo);
txtTextView = el.TextView(R.id.test);
txtTextView.setText("tttt");//这个可以
Util.setTimeout(new Runnable() {
public void run() {
// TODO Auto-generated method stub
runOnUiThread(new Runnable() {
public void run() {
setText("fdsafdsa");
}
});
Util.log("-------> " + txtTextView.getText().toString()); //这个也显示
}
}, 3000);
}
这个runOnUiThread方法里面怎么实现才能调用到UI线程啊?
原来timer也是用线程做的啊 我还以为和js里面的一样呢....在线程中操作UI的话java也应该有backgroundWorker的东西吧?
先定义一个 private Handler handler = new Handler()
{
public void handleMessage( Message msg )
{
int what = msg.what;
switch( what )
{
case 1 :
setText("fdsafdsa");
break;
default :
break;
}
}
};
然后再run里面发送消息:Message m = new Message();
m.what=1;
handler.sendMessage( message );
这不是主线程吧。而是另外开了一个线程吧?在计时器里又开了个线程?推荐用消息方式Message m = new Message();发送。
1.Activity.runOnUIThread(Runnable)
2.View.post(Runnable),View.postDelay(Runnable,long)
3、Handler
4、AsyncTask
Activity.runOnUiThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable, long)