gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 08:34:52 24 4
gpt4 key购买 nike

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

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

最佳答案

要添加的代码量相当大,但是,这是您必须要做的。

假设您有一个扩展 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

关于java - 在android中自动更改为显示日期的新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com