Java 安卓倒计时不起作用
尝试在我的应用程序中创建一个小倒计时,但它不起作用 这个想法是倒计时到一个特定的时间。先是几天,再是几小时 下面的方法在我的Fragmentclass.java中(因此它是一个片段) 请注意,文本框值现在只是用于测试,但我似乎无法让它显示倒计时Java 安卓倒计时不起作用,java,android,datetime,countdown,android-sdk-2.3,Java,Android,Datetime,Countdown,Android Sdk 2.3,尝试在我的应用程序中创建一个小倒计时,但它不起作用 这个想法是倒计时到一个特定的时间。先是几天,再是几小时 下面的方法在我的Fragmentclass.java中(因此它是一个片段) 请注意,文本框值现在只是用于测试,但我似乎无法让它显示倒计时 这也是最好的方法吗?如果我运行您的代码,下面是变量的值: endTime = 1348902045437 currentTime = 1340645325437 remaining = -8256720000 seconds = 0
这也是最好的方法吗?如果我运行您的代码,下面是变量的值:
endTime = 1348902045437
currentTime = 1340645325437
remaining = -8256720000
seconds = 0
如您所见,秒==0,这就是原因
还要注意,倒计时(长毫秒未来,长倒计时间隔)
中的第一个参数是
从调用start()到
完成倒计时并调用onFinish()
因此,固定代码是:
Calendar cal = Calendar.getInstance();
cal.set(2012, 8, 29, 10, 0);
long endTime = cal.getTimeInMillis();
long currentTime = System.currentTimeMillis();
long remaining = endTime - currentTime;
new CountDownTimer(remaining, 1000) {
...
更新:
奇怪的是,它没有更新文本视图。我唯一能提出的想法是在主UI线程上运行更新调用。应该是这样的:
public void onTick(long millisUntilFinished) {
final String days = .. // some code to generate days
getActivity().runOnUiThread(new Runnable() {
public void run() {
tv.setText("Days left: " + days);
}
});
}
public void onFinish() {
Log.i("countdown","CD Finished");
getActivity().runOnUiThread(new Runnable() {
public void run() {
tv.setText("CD Finished!");
}
});
}
如果这没有帮助,那么我就没有主意了。它没有显示任何东西吗?或者它没有倒计时?textView.setText根本不工作。它不会更新控件。多亏了Arhimed的帖子,至少它的点击方法是正确的。如果你在几天内显示它,你确定它不只是显示还剩多少天吗?是你的日志。我称之为工作(每次都有人打电话?)你帮我节省了很多时间。。我不知道如何储存倒计时计时器。。但是你的问题给我答案。。这行节省了我剩余的许多小时=currentTime-endTime;好的,我明白了,现在是点击滴答法。但它并没有更新文本。我甚至删除了计数器部分,只添加了纯文本。我还试图将textview变量移到计数器之外,但这只会导致空引用崩溃。那么我如何更新文本框?很有效。愚蠢的Eclipse/Android/App。太棒了!好吧,别难过,看起来你只是需要一些时间来阅读Android文档/指南。谷歌提供了很好的文档,顺便说一句,如果与黑莓相比的话。然而,Eclipse和Android SDK的结合确实会带来一些令人不安的体验,这是真的,它并不完美。
public void onTick(long millisUntilFinished) {
final String days = .. // some code to generate days
getActivity().runOnUiThread(new Runnable() {
public void run() {
tv.setText("Days left: " + days);
}
});
}
public void onFinish() {
Log.i("countdown","CD Finished");
getActivity().runOnUiThread(new Runnable() {
public void run() {
tv.setText("CD Finished!");
}
});
}