我想在setText()
上进行TextView
并让活动暂停。
以下是代码:
tv.setText("myText");
tv.invalidate(); // Doesn't work
pause(1000); // French for sleep
我的功能暂停:
public void pause(int seconds)
{
synchronized(this)
{
try {
this.wait(seconds);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
}
}
问题是TextView在睡眠前没有更新。我试图在TextView上调用invalidate()
,但它不起作用。
我有另一种可能的解决方案:创建一个用于休眠活动的新线程,如果我的TextView的值仍然相同,则重新加载线程,否则调用我的函数pause()
。但是有可能在View中获得TextView的真正价值吗?因为我可以在做的时候得到新的文字:
tv.setText("myText");
System.out.println(tv.getText());
pause(1000); // French for sleep
而文本不会在视图中更新。
有什么想法吗?
答案 0 :(得分:2)
我会建议Jave说的话。
tv.setText("myText");
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something
}
}, 3000); //3000 is time in ms.
答案 1 :(得分:0)
如果您使用UI线程并使其休眠时间过长,您将获得应用程序无响应对话框。当然,只有当函数结束时,您才会看到新值,因此这不是一个好的解决方案。如果您只想使用UI线程,可以使用处理程序。
如果您使用不同的线程,则需要使用UI线程以某种方式设置TextView的文本,因为它是唯一允许这样做的(使用处理程序)。