我目前正在在Android应用程序上显示当前时间。我已经有了当前时间,但我需要保持动态。它应该每秒更新一次。我找到了这种解决方案,但是出了点问题:

public void onActivityCreated(Bundle savedInstanceState) {

    super.onActivityCreated(savedInstanceState);

    Thread timerThread = null;

    Runnable runnable = new CountDownRunner();
    timerThread = new Thread(runnable);
    timerThread.start();
}

public void doWork() {
    runOnUiThread(new Runnable() {
        public void run() {
            try {
                Date dt = new Date();
                int day = dt.getDate();
                int month = dt.getMonth();
                int hours = dt.getHours();
                int minutes = dt.getMinutes();
                int seconds = dt.getSeconds();
                String curTime = hours + ":" + minutes + ":" + seconds;
                time.setText(curTime);
            } catch (Exception e) {
            }
        }
    });
}

class CountDownRunner implements Runnable {
    // @Override
    public void run() {
        while (!Thread.currentThread().isInterrupted()) {
            try {
                doWork();
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            } catch (Exception e) {
            }
        }
    }
}

错误在此行上:
runOnUiThread(new Runnable() {
我认为发生此错误的原因是因为我正在Fragment中实现它。它没有扩展为实现Thread所必需的Activity。

我尝试搜索并找到了一个可能的答案,其中我需要一个 Activity 来扩展它在上的运行onUUiThread ,但我没有找到实现该功能的任何实现。我现在有点困惑和困惑。

最佳答案

试试这个:getActivity().runOnUiThread(new Runnable...
这是因为:

1)您对 runOnUiThread 的调用中的隐式this指的是 AsyncTask,而不是而不是您的片段

2)片段没有 runOnUiThread

10-08 15:16