Android TextView文本在运行时不会更新

时间:2010-09-03 19:21:32

标签: android android-widget

由于更新TextView应该是一项简单的任务,因此我必须在这个问题上遗漏一些完全愚蠢的东西。我有一个Activity类,它是另一个接收消息的观察者。在我的Activity's 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
}

然而,屏幕不会更新。我必须忽略一些事情......

1 个答案:

答案 0 :(得分:0)

看起来我找到了一个解决方案,虽然它感觉像是一个黑客。我从上面的评论和here中得到了这个想法。

我现在正在使用Handler通知活动B一条消息已经进入它感兴趣的内容.B在其onCreate中创建一个Handler:

  Handler statusHandler = new Handler();
  statusHandler.post(new Runnable() 
  {
      public void run()
      {
         statusUpdate();
      }
  });

我更新了消息接收器类C(B试图成为Observer),当B向其注册时接收句柄。然后在C中,当适用的消息进入时,我调用以下内容:

theMsgObserverHandle.post(new Runnable()
{
   public void run()
   {
      Log.d(myName, "Calling my Observer statusUpdate");  

      theMsgObserver.statusUpdate();
   }
});

我不喜欢的是现在我不能直接将消息传递给B. (我的消息类是我自己定义的类而不是android.os.Message)现在在B中,我需要询问消息的C实例(C是Singleton)。但至少我正在前进。如果有人有更好的实施,我真的很感激反馈。