0

你能告诉我这条线的问题在哪里吗:timerText.setText(seconds);

public class ShowTimer extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.timer_test_xml);

        Timer myTimer = new Timer();
        myTimer.schedule(new TimerTask() {
            int seconds;
            TextView timerText = (TextView) findViewById(R.id.TimerTestId);
            @Override
            public void run() {
                seconds++;
                timerText.setText(seconds);
            }
        }, 0, 1000);

    }}
4

4 回答 4

0

尽管这不能回答 OP 的原始问题,但有替代方法(并且 - 如果您同意 Android 文档中的建议 - 更好)可以在此线程中描述执行此操作。

于 2013-10-27T17:06:33.757 回答
0

我认为您想要做的是seconds在文本视图中显示。但是,该TextView.setText(int)函数不这样做(我实际上不确定它做了什么)。您要做的是timerText.setText(""+seconds);将参数转换为字符串并将函数调用更改为不同的重载函数。

于 2013-10-27T16:48:33.293 回答
0

与理查德的建议一样,您的另一个问题是在非 UI 线程上更新 TextView,因此请考虑使用Handler

例子

public class ShowTimer extends Activity {

    private Handler mHandler;
    private TextView timerText = null;
    private int seconds;

    private Runnable timerRunnable = new Runnable() {
        @Override
        public void run() {
            timerText.setText(String.valueOf(seconds++));
            mHandler.postDelayed(timerRunnable, 1000);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.timer_test_xml);

        mHandler = new Handler();

        timerText = (TextView) findViewById(R.id.TimerTestId);
        timerRunnable.run();
    }
}
于 2013-10-27T17:11:14.533 回答
0

seconds是一个,而我认为您希望根据文档int作为字符序列传递,或者通过资源 id 对一个序列的引用。

于 2013-10-27T16:50:31.723 回答