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

尝试在我的应用程序中创建一个小倒计时,但它不起作用

这个想法是倒计时到一个特定的时间。先是几天,再是几小时

下面的方法在我的Fragmentclass.java中(因此它是一个片段)

请注意,文本框值现在只是用于测试,但我似乎无法让它显示倒计时


这也是最好的方法吗?

如果我运行您的代码,下面是变量的值:

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!");
        }
    });
}