我正在尝试制作一个基本的倒数计时器。我要说实话,我通过一个教程得到了大部分内容,所以我不完全理解它的工作原理,但我已经花了好几个小时才找到答案,我不知道还能在哪里看。< / p>
我在TimeUnit之后得到一个'无法解析符号'。例如:MILLISECONDS,SECONDS,MINUTES。
package com.dukehatz.dev.bwexercise;
import android.os.CountDownTimer;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.w3c.dom.Text;
public class Dips extends ActionBarActivity {
TextView CountdownTimer;
Button TimeStart, TimeReset;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dips);
TimeStart = (Button) findViewById(R.id.TimeStart);
TimeReset = (Button) findViewById(R.id.TimeReset);
CountdownTimer = (TextView) findViewById(R.id.CountdownTimer);
CountdownTimer.setText("5:00.000");
final CounterClass timer = new CounterClass(100000, 1000);
TimeStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timer.start();
}
});
}
public class CounterClass extends CountDownTimer {
public CounterClass(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;
String hms = String.format("%02d:%02d:%02d"),
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis);
System.out.print(hms);
CountdownTimer.setText(hms);
}
@Override
public void onFinish() {
CountdownTimer.setText("Complete!");
}
}
}
如果它存在的话,我就是为了更容易更初学的方式。
感谢您的帮助
答案 0 :(得分:4)
您错过了导入。我不熟悉您正在使用的库,但他们可能期望java.util.concurrent.TimeUnit。如果是,请将import java.util.concurrent.TimeUnit;
添加到导入列表中。
编辑 -
啊,是的。您还有几个缺失/错位的括号。与此相比:
@Override
public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;
String hms = String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
System.out.print(hms);
CountdownTimer.setText(hms);
}
这里的想法是你传入的小时,分钟和秒是参数到String.format方法。它们对应于&#34;%02d&#34;格式字符串中的短语。调用方法时,所有参数都必须在()中。