我有一个名为EventButton的类,它扩展了Button。
所有按钮的设置都在此类中,onClick()等。
我还有一个Home活动,它有一个scrollview
当用户按下菜单按钮时,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的名称和时间时,会调用上面的内容。
更新
毕竟问题似乎与处理程序无关。这似乎是当我试图让时间和分钟崩溃时。
答案 0 :(得分: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);
}