如何查看,比较和刷新当前时间?

时间:2014-04-06 13:06:30

标签: android time

我目前的应用程序的目的是获取手机的当前时间,将其与我设置的时间范围列表进行比较,并查看我当前时间和时间范围之间的剩余时间(所以我需要每秒刷新一次视图。)

示例:当前时间=晚上11点           时间范围A =晚上11:10

我想查看:

   x = 11h  
   A = 11h10min            

   view ( x); // refreshing each seconds 
   view ( A- x); // refreshing each seconds 

目前我已经成功地查看了当前的时间:

public class HoraireTempsReel extends Activity {

private TextView tvDisplayTime;
private int hour;
private int minute;
private String CurTime;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.horairetempsreel);

    setCurrentTimeOnView();
}

// display current time
public void setCurrentTimeOnView() {

    tvDisplayTime = (TextView) findViewById(R.id.tvTime);


    final Calendar c = Calendar.getInstance();
    hour = c.get(Calendar.HOUR_OF_DAY);
    minute = c.get(Calendar.MINUTE);

    // set current time into textview

    Resources CurTimeRes = getResources();
    CurTime = CurTimeRes.getString(R.string.CurTime,hour,minute);

    tvDisplayTime.setText(CurTime);


}

}

但是我没有成功地让它每秒都刷新一次。 我已经完成了一些研究,我发现使用处理程序可能是一个解决方案,但这个概念有点难以理解(我在android开发中是初学者)所以我想知道是否有另一个解决问题的方法。

(抱歉我的英文不好,我不是本地人)

更新 谢谢你回答Salauyou!

  

首先,将日期时间变量保持为整数或者是一种不好的方式   字符串。 Java中有一个名为Date的专门类   目的

好的,我会尽快尝试改变。

  

并且不要依赖默认的语言环境!

你是什么意思?

  

现在您的计时器已经安排好并将执行您的计时器   每1秒setCurrentTimeOnView()方法,直到你取消它   timer.cancel()

好的,我试图调整你给我的代码到我的程序,它给出了类似的东西:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.horairetempsreel);

        Timer timer = new Timer();  

        timer.schedule(new TimerTask(){  // set a TimerTask 
           @Override
           public void run(){            // override its run() method
              setCurrentTimeOnView();    
           }

        }, 0, 1000);    

}

我不知道把timer.cancel()放在哪里,它给我一个关于logcat的错误:

E / AndroidRuntime(7701):android.view.ViewRootImpl $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图。

0 个答案:

没有答案