我目前正在在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