我已经在我的Android应用程序中的textview上设置了显示当前日期,它可以工作,但它不会在00:00:00 AM之后自动更改为新的日期,直到我们关闭App并打开。请帮助。这是我的代码:
TextView tv = (TextView) findViewById(R.id.date);
String ct = DateFormat.getDateInstance().format(new Date());
tv.setText(ct);
答案 0 :(得分:3)
要添加相当多的代码,但是,这就是你必须要做的事情。
假设您的课程延长Activity
,则需要覆盖onPause()
和onResume()
。
例如:
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
在这两种方法中,您必须注册和取消注册IntentFilter
将IntentFilter
创建为全局变量。我们还将创建稍后将使用的侦听器。
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的更多信息