1

我有一个名为 EventButton 的类,它扩展了 Button。

所有 Button 的设置都在这个类中,onClick() 等。

我还有一个 Home 活动,它有一个滚动视图

当用户按下菜单按钮时,EventButtons 被添加到 Home 活动的滚动视图中。我不实例化我只是调用 new EventButton() 的对象

当用户单击按钮时,将显示一个对话框,用户设置“事件”的名称和“事件”的时间。

然后,名称和时间将显示在主页活动的 scollview 内的该按钮上。

我的问题是,您将如何每隔 5 分钟刷新一次 EventButton 以检查设置的时间是否已过。我尝试了 TimerTask 和 Timer 以及 Handler 但似乎都不起作用。TimerTask一直崩溃,我也发现最好在android中使用Handler。

    private void scheduleDelay() {

    EventButton.this.postDelayed(new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            int mHour = calendar.get(Calendar.HOUR_OF_DAY);
            int mMinute = calendar.get(Calendar.MINUTE);

            if(EventButton.hour < mHour || EventButton.minute < mMinute) {
                EventButton.this.setBackgroundColor(Color.RED);
            }
            EventButton.this.postDelayed(this, 5);
        }
    }, 5);
}

当用户在 AlertDialog 中设置 EventButton 的名称和时间时调用上述方法。

更新

毕竟问题似乎不在于处理程序。似乎是当我尝试获取崩溃的小时和分钟时。

4

1 回答 1

0

将您的使用时间更改为 5 分钟 (5 * 60 * 1000) 而不是 5 毫秒:

private void scheduleDelay() {

    EventButton.this.postDelayed(new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            int mHour = calendar.get(Calendar.HOUR_OF_DAY);
            int mMinute = calendar.get(Calendar.MINUTE);

            if(EventButton.hour < mHour || EventButton.minute < mMinute) {
                EventButton.this.setBackgroundColor(Color.RED);
            } else {
                // wait another 5 minutes
                scheduleDelay();
            }

        }
    }, 300000);
}
于 2013-10-06T20:30:08.420 回答