【问题标题】:Automatically change to new date for display date in android在android中自动更改为显示日期的新日期
【发布时间】:2016-06-04 11:49:38
【问题描述】:

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

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

【问题讨论】:

  • 发生这种情况是因为初始化只发生在那些
  • 所以请告知我可以做些什么来让它始终初始化
  • 您只想在 12:00 更改 TextView 内容?
  • 您需要决定何时更改日期(例如,从该活动开始的活动返回时会发生 onResume,或者您可以在 onClick 上更改按钮(当按钮为点击))。
  • 你也可以用户AlarmManagerstackoverflow.com/questions/10700003/…

标签: java android xml


【解决方案1】:

这将是一个相当多的代码添加,但是,这是你必须做的。

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

【讨论】:

  • 我不太明白
  • 哪些部分?也许我可以帮忙。 @SamithFP
  • 您的 Java 文件是否扩展了 Activity? @SamithFP
  • 我已经按照你的代码了,但是问题出在 super.onResume 上,而 super.onPause 上是红色的,所以是什么错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 2011-09-20
  • 1970-01-01
  • 2023-02-22
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
相关资源
最近更新 更多