大家好,我现在在Android2.3下开发应用程序出现了这么一个问题。在一个Activity中有一个TextView控件,这个控件我在当前activity的xml里给其赋予了值,比如说是“当前组为XXXXX”

于是最开始的时候这个activity中文本框显示的是当前组为XXXXX。好啦,我在别的java文件中发送消息给这个activity想着更新这个文本框,于是activity接到消息后,

case MyApp.WM_CURRENTGROUP:
TextView textViewCurrentGroup = (TextView)findViewById(R.id.standby_textView1);
CharSequence text = "当前组为"+CCallControl.gID;
Log.i(TAG, "当前组是"+CCallControl.gID);
textViewCurrentGroup.setText(text);
textViewCurrentGroup.invalidate();
break;

我log输出的结果为 当前组为1111,

可是我的UI界面上有时候确实是显示的为 当前组为1111

但是有的时候我的log输出了正确的信息,界面上依然显示的是 当前组为XXXXX

这是怎么回事呢,有知道的么?

谢谢您帮助我。我是在自己建立的一个线程里发送消息,然后主线程接收到消息后做出响应。我看到消息的发出是正常的,主线程也能借到这个消息,然后程序会执行到我提到的那个case程序段。 您提到的是不是在可操作ui的线程上操作的,我觉得是。因为我有时候是可以看到那个textview改变的,但是有的时候就是没改变。一旦我离开这个界面,然后再跳转到这个界面时,我就发现这个textview的内容改变了。
public class StandByActivity  extends Activity  {
...//初始化等等
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...//一些代码
setContentView(R.layout.standby);
//...一些处理代码
//开启主线程的消息队列
activityHandler = new Handler(){
@SuppressLint("HandlerLeak")
public void handleMessage(Message msg) {
Intent intent = new Intent();
switch(msg.what)
...//一些分支语句
case MyApp.WM_CURRENTGROUP:
TextView textViewCurrentGroup = (TextView)findViewById(R.id.standby_textView1);
CharSequence text = "当前组为"+CCallControl.gID;
textViewCurrentGroup.setText(text);
textViewCurrentGroup.setTextColor(0xffff00ff);
Log.i(TAG, "当前组是"+CCallControl.gID);
textViewCurrentGroup.invalidate();

break;

...//剩余部分代码

invalidate(); 我以为我的textview内容不变是有时候android UI未刷新的缘故。 invalidate();这个可以刷新控件。但是现在还是有时候控件内容显示变了,但是有时候不变。虽然显示的没有变,但是通过log信息可以看到输出,本质确实是变了,但是显示出来的还是原来的。

评论 ( 0 )