在android中自动更改为显示日期的新日期

时间:2016-06-04 03:17:26

标签: java android xml

我已经在我的Android应用程序中的textview上设置了显示当前日期,它可以工作,但它不会在00:00:00 AM之后自动更改为新的日期,直到我们关闭App并打开。请帮助。这是我的代码:

TextView tv = (TextView) findViewById(R.id.date);
    String ct = DateFormat.getDateInstance().format(new Date());
    tv.setText(ct);

1 个答案:

答案 0 :(得分:3)

要添加相当多的代码,但是,这就是你必须要做的事情。

假设您的课程延长Activity,则需要覆盖onPause()onResume()
例如:

@Override
protected void onPause() {
    super.onPause();
}

@Override
protected void onResume() {
    super.onResume();
}

在这两种方法中,您必须注册和取消注册IntentFilterIntentFilter创建为全局变量。我们还将创建稍后将使用的侦听器。

private IntentFilter filter;
private final BroadcastReceiver listener;

onCreate()

中实例化
filter = new IntentFilter();
filter.addAction(Intent.ACTION_DATE_CHANGED);

此外,在此之后,我们将创建监听器,告诉它在日期更改时该怎么做。

listener = new BroadcastReceiver() {
    @Override
    public void onReceive(Context c, Intent i) {
        TextView tv = (TextView) findViewById(R.id.date);
        String ct = DateFormat.getDateInstance().format(new Date());
        tv.setText(ct);
    }
};

最后,我们必须在应用程序打开和关闭时注册和取消注册侦听器。

@Override
protected void onResume() {
    super.onResume();
    registerReceiver(listener, filter);
}

@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(listener);
}

而且,你有它!现在应该在日期发生变化时自动更新。另外,我不建议每次日期更改时重新初始化TextView,但是您当前的代码就是这样,所以我离开了它。

来自Ben English的更多信息