Tôi rất mới phát triển Android. Cố gắng thực hiện một điều gì đó khá đơn giản - thay đổi một số văn bản được hiển thị khi một bộ đếm thời gian được đánh dấu. Dưới đây là các mã có khả năng liên quan:Thay đổi văn bản của TextView - văn bản cũ không biến mất (Android 4.1.2)
CountDownTimer currentTimer;
Resources res;
TextView timerText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exercise);
res = getResources();
timerText = (TextView) findViewById(R.id.timer_text);
}
@Override
protected void onStart() {
super.onStart();
//"Get ready" countdown
currentTimer = new CountDownTimer(5000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
timerText.setText("" + (int)Math.ceil(millisUntilFinished/1000.0));
}
@Override
public void onFinish() {
...
}
};
currentTimer.start();
}
này hoạt động tốt trên một mô phỏng 4.2.2 thiết bị, nhưng trên một thiết bị 4.1.2 (cả về thể chất và mô phỏng), các TextView thay đổi xuất hiện như vậy trong khi số tiền thu được đếm ngược:
Nếu bạn không thể biết, đó là số 5,4,3 được xếp chồng. Vì vậy, khi tôi thiết lập một chuỗi mới cho TextView, chuỗi mới được hiển thị nhưng không thay thế chuỗi cũ. Bất kỳ TextView nào khác được sử dụng trong ứng dụng của tôi đều hoạt động theo cùng một cách.
Bất kỳ ý tưởng nào về sự cố và cách khắc phục sự cố?
Sửa: Từ file layout XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ExerciseActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:keepScreenOn="true"
android:orientation="vertical" >
...
<TextView
android:id="@+id/timer_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textIsSelectable="false"
android:hint="@string/timer_default" />
...
</LinearLayout>
Đó là tất cả những gì có thể có liên quan.
Đảm bảo rằng bạn thay đổi văn bản trong Chủ đề giao diện người dùng. Trong Thread nào 'onTick()' đang chạy? – SimonSays
Đăng tệp XML bố cục của bạn. – Squonk
thử 'timerText.invalidate();' sau khi đặt văn bản. – 323go