초 단위로 카운트 다운하고 매번 TextView를 업데이트하여 남은 시간을 표시하는 타이머를 작성하려고합니다. 내가 타이머 코드 (이벤트 사이의 1 초 및 괜찮아 초 분으로 변환 이벤트 사이에 일하고있다) 말할 수있는 안드로이드 및 Log.d() 안드로이드 외부에서 테스트 한 원인. textview를 업데이트하면 문제가 발생합니다. null 포인터를 얻으려고했는데, 원래 UI 뷰의 스레드가 UI 스레드 (오류 메시지에 대한 해석)에 액세스 할 수 있기 때문에 textview를 업데이트하려고 할 때 runOnUiThread()를 추가하여 액세스 및 업데이트 할 수있게했지만 현재는 그렇지 않습니다. 올바르게 업데이트하십시오. 나는 이것이 문제가있는 곳이라고 생각하지만 완전히 확신 할 수는 없으며 그것을 해결하는 방법을 알아 내거나 이것을하기위한 더 좋은 방법을 찾아 낼만큼 충분히 알지 못한다. 나는 눈의 또 다른 세트를 고맙게 생각할 것이다. 감사합니다android에서 타이머를 생성하는 데 문제가 있습니다.
final static int delay = 1000;
final static int period = 1000;
public void start(int hin, int min) {
run = true;
int hrinsec = (hin * (60 * 60));
int mininsec = (min * 60);
secs = hrinsec + mininsec;
run = false;
interval = secs;
Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
public void run() {
// Convert seconds back to hrs and mins
hrsFromSecs(secs);
minsFromSecs(secs);
secsFromSecs(secs);
dint total = hours + minutes + seconds;
output = hours + " Hours " + minutes + " Minutes " + seconds
+ " Seconds";
// Countdown and update the textview
runOnUiThread(new Runnable() {
@Override
public void run() {
timer.setText(output);
}});
secs = secs - 1;
checkIfDone(total);
}
}, delay, period);
}
를 재발견합니다. UI 스레드에서 실행하지 마십시오. – ChuongPham