【发布时间】:2012-09-17 02:25:07
【问题描述】:
我在处理程序上有这个示例应用程序,它在特定时间触发一个日志,但是当我单击我的开始按钮时它似乎不起作用。下面是我的代码。
public class Main extends Activity {
private long selectedTimeInMills;
private Handler handler;
private static final Calendar CALENDAR = Calendar.getInstance();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TimePicker timepicker = (TimePicker) findViewById(R.id.timePicker1);
final TextView timeText = (TextView) findViewById(R.id.time);
Button start = (Button) findViewById(R.id.button1);
handler = new Handler();
String textTime = formatDate(CALENDAR.getTimeInMillis(), "hh:mm a");
timeText.setText(textTime);
timepicker.setOnTimeChangedListener(new OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
CALENDAR.set(Calendar.HOUR_OF_DAY, hourOfDay);
CALENDAR.set(Calendar.MINUTE, minute);
selectedTimeInMills = CALENDAR.getTimeInMillis();
String textTime = formatDate(CALENDAR.getTimeInMillis(), "hh:mm a");
timeText.setText(textTime);
}
});
start.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Runnable runnable = new Runnable() {
public void run() {
Log.d("HandlerCheck", "Handler Fired! @ ("+selectedTimeInMills+") "+formatDate(selectedTimeInMills, "hh:mm a"));
}
};
boolean flag = handler.postAtTime(runnable, selectedTimeInMills);
Toast.makeText(Main.this, "Handler is Fired?:: "+flag, Toast.LENGTH_LONG).show();
}
});
}
}
注意:当我单击按钮并实现 handler.postAtTime() 时,它会返回 true,但即使我已将时间选择器设置为距当前时间 1 分钟,它仍然不会显示登录 DDMS '不触发 DDMS 上的日志消息
【问题讨论】:
-
您是否在 logcat 中看到任何错误/异常?
-
没有任何东西被显示出来,在选定的时间过去后什么都没有发生
-
好的,刚刚想到了一些东西。确保您在 12 小时制和 24 小时制之间没有不匹配的时间,例如,下午 3 点(12 小时)是 15 点(24 小时)。尝试记录传递到
onTimeChanged(...)的内容以进行检查。 -
hmm onTimeChanged 总是有 24 格式,所以下午 3 点是 15,也尝试使用 System.currenttimeinmills 并将 20 秒添加到 postAtTime 仍然没有任何反应。