在CountDownTimer
onFinish
方法上,我想将2个字符串设置为2个这样的不同视图
public void onFinish() {
setText(timer, getString(R.string.times_up));
setText(speedTextView, speedValue);
setColorTimer(timer, Color.RED);
runOnUiThread(new Runnable() {
public void run() {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(getApplicationContext(), ResultActivity.class);
startActivity(intent);
}
}, 3000);
}
});
}
但是,当计时器结束时,R.string.times_up
值将同时投射到timer
和speedTextView
视图。我更改了两行的顺序,在这种情况下,speedValue
投射在两个视图上,尽管它们应该是2个不同的方法调用。
setText
方法是一种经过修改的方法,可以在主线程而不是像这样的后台线程上运行它们
private void setText(final TextView text, String value) {
speedValueToSetText = value;
runOnUiThread(new Runnable() {
@Override
public void run() {
text.setText(speedValueToSetText);
}
});
}
我该如何解决? setText方法不应该彼此独立吗?
答案 0 :(得分:1)
全局变量speedValueToSetText
导致错误。删除此行speedValueToSetText = value;
。setText
应该是
private void setText(final TextView text, String value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
text.setText(value);
}
});
}
或
private void setText(final TextView text, String value) {
speedValueToSetText = value;
final String resultValue = value;
runOnUiThread(new Runnable() {
@Override
public void run() {
text.setText(resultValue);
}
});
}