【发布时间】:2010-09-03 19:21:31
【问题描述】:
我必须错过一些完全愚蠢的东西,因为更新 TextView 应该是一件容易的事。我有一个 Activity 类,它是另一个接收消息的观察者。在我的 Activity 的 onCreate 中,我执行以下操作,它工作正常。
theStatus = (TextView) findViewById(R.id.theStatus);
theStatus.setText("waiting");
稍后,当消息活动收到一条新消息时,它会将其交给它的观察者(我的活动)
public void statusUpdate( GenericMessage aMessage )
{
String statusText = aMessage.getDetails();
theStatus.setText(statusText);
theSessionStatus.invalidate(); // I've tried with and without this call
}
但是屏幕没有更新。我一定是忽略了什么……
【问题讨论】:
-
你确定
statusUpdate()甚至被调用了吗? -
我确定正在调用 statusUpdate。我正在使用调试器并捕获我在那里设置的断点。我现在意识到可能会影响我的一个细节是这个 Activity 不是应用程序的主要 Activity。短篇故事是主应用程序启动并等待用户单击按钮启动。一旦启动,它就会启动消息线程,并根据来自它的消息决定向用户显示什么活动。它通过调用 startActivityForResult 来启动这个 Activity,然后 Activity 将自己注册为消息线程的观察者。
-
您应该确保正在进行的活动处理 statusUpdate() 调用。
-
我已经确定 statuUpdate() 被调用了。正如我在之前的评论中所说,我正在使用调试器。我可以跳过 setText 调用并查看变量属性中的文本,但屏幕没有更新。
-
我猜 Karan 的意思是应该在 UI 线程上调用
statusUpdate。您是否尝试过在主要活动中更新TextView?