Textview未正确刷新

时间:2013-07-18 16:44:44

标签: android textview

我遇到了textview的问题。当我使用settext更改文本值时,旧值不会消失,新值将被覆盖。所以几秒钟后,它完全难以辨认。我不知道如何用英文命名这个bug,这就是为什么我发布你的截图(编辑:我不能发布)

我的源代码:

public class AlarmActivity  extends Activity {

int tempsRestant;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_alarm_pad);

    startCountdown();
}

void startCountdown(){
    //final View view=findViewById(R.layout.activity_alarm_pad).getRootView();
    //final View view=((ViewGroup)findViewById(R.layout.activity_alarm_pad)).getChildAt(0);

    final View view=this.findViewById(android.R.id.content);
    new CountDownTimer(59000, 1000) {
        TextView mTextField = (TextView) findViewById(R.id.countdown);
         public void onTick(long millisUntilFinished) {
             tempsRestant = (int)millisUntilFinished/1000;
            mTextField.post(new Runnable() {
                 public void run() {
                    mTextField.setText("00:" + tempsRestant);
                    ((View)mTextField.getParent()).invalidate();
                 }
             });
             //runOnUiThread(updateTimer());

         }

         public void onFinish() {
             mTextField.setText("Systeme actif");
         }
      }.start();


}
}

我用.invalidate()尝试了很多东西(在根视图上,在父视图上),但我总是有同样的错误......

事实上,我不明白视图刷新或线程(倒计时线程)是否有问题。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此代码,但我认为问题可能是您的设备,我在Android 4.2.2和2.2中尝试了您的代码并且可以正常运行:

mTextField.setText("");
mTextField.setText("00:" + tempsRestant);
((View) mTextField.getParent()).invalidate();