CountDownTimer错误地将文本设置为超出要求的视图

时间:2018-08-08 07:59:31

标签: android

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值将同时投射到timerspeedTextView视图。我更改了两行的顺序,在这种情况下,speedValue投射在两个视图上,尽管它们应该是2个不同的方法调用。

setText方法是一种经过修改的方法,可以在主线程而不是像这样的后台线程上运行它们

private void setText(final TextView text, String value) {
    speedValueToSetText = value;
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            text.setText(speedValueToSetText);
        }
    });
}

我该如何解决? setText方法不应该彼此独立吗?

1 个答案:

答案 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);
        }
    });
}