在Java代码运行时,有没有一种方法可以更改TextView中的文本?

3
我在一个Android应用程序的XML布局中有一个TextView。这个TextView显示了strings.xml中一个字符串的值。然而,当我的Java代码运行时,我希望该字符串的值每秒钟更改一次,持续4秒,并且我希望XML布局显示该更改。
在Java代码运行时是否有一种方法可以更改strings.xml中的字符串值?如果没有,是否有一种替代方法可以在Java代码运行时更改textView中显示的文本?

5
Strings.xml 是不可更改的。然而,TextView#setText() 可以接受任何字符串或字符串资源 ID。 - A--C
忘掉布局。http://developer.android.com/reference/android/widget/TextView.html#setText(java.lang.CharSequence). 在尝试开发Android应用程序之前,请先进行一些基本的Java教程。 - Simon
1
请参考每隔N秒更新TextView?来更新您的Java代码运行时的TextView。 - ρяσѕρєя K
谢谢回复 - 我原本以为Strings.xml是不可更改的,但在另一个帖子中,有人说它可以更改,而且没有被反驳。我尝试使用"TextView.setText(num)",其中'num'是我要显示的字符串变量,但出现了一个错误,说当我定义TextView时,它需要是一个'final'变量。所以我这样做了,但结果是应用程序在即将更改为'num'的第二个值时崩溃了。有没有办法让它在'sleep(1000);'之前和之后更改多次?或者我还做错了什么? - Uwais A
如果您正在使用普通的“Thread”,那么您可能会收到一个异常,指出您无法从不同的“Thread”更新UI(这就是为什么我们使用runOnUIThread())coder的答案应该可以工作,并且肯定更清洁。 - A--C
1个回答

3

我建议使用一个计时器

private Timer timer = new Timer();
private TimerTask timerTask;
timerTask = new TimerTask() {
  @Override
  public void run() {
    //refresh your textview
  }
};
timer.schedule(timerTask, 0, 10000);

您可以使用以下方法取消:

timer.cancel();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接