今年夏天,为了学习app开发,我已经决定在Android工作室做一个闹钟,事先没有太多Java或OOP方面的知识。
我试图使用TimePickerDiaglog获取用户对警报的输入,然后将该时间存储在Calendar实用程序中,这样我就可以使用警报管理器设置一个挂起的意图。
public class AlarmParameters extends AppCompatActivity {
EditText time;
Button btn_set_alarm;
TimePickerDialog mTimePicker;
Calendar mcurrentTime;
AlarmManager alarmManager;
private PendingIntent pending_intent;
private AlarmReceiver alarm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm_parameters);
//match ids
btn_set_alarm = (Button) findViewById(R.id.parameters_btn_set_alarm);
time = (EditText) findViewById(R.id.time_box_text);
//remove pesky keyboard
time.setInputType(InputType.TYPE_NULL);
// perform click event listener on edit text
time.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//retrieve current time
final Calendar mcurrentTime = Calendar.getInstance();
int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
int minute = mcurrentTime.get(Calendar.MINUTE);
mTimePicker = new TimePickerDialog(AlarmParameters.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
//adds the 0, like : 10:6 AM --> 10:06 AM
if(selectedMinute<10){
time.setText(selectedHour + ":0" + selectedMinute);
}
else {
time.setText(selectedHour + ":" + selectedMinute);
}
//store time picked in the calendar
mcurrentTime.set(Calendar.HOUR_OF_DAY, selectedHour);
mcurrentTime.set(Calendar.MINUTE, selectedMinute);
// no seconds in the calendar
mcurrentTime.add(Calendar.SECOND, 0);
}
}, hour, minute, true);//Yes 24 hour time
//more settings for dialog window
mTimePicker.setTitle("Select Time");
mTimePicker.show();
}
});
//actions when you hit the set alarm text
btn_set_alarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get the time of the alarm set from text box
String alarm_set_string = String.valueOf(time.getText());
//add that alarm to list of alarms on first page
MainActivity.ALARMARRAY.add(alarm_set_string);
//create intent to send to alarmReceiver
final Intent myIntent = new Intent(AlarmParameters.this, AlarmReceiver.class);
//set up alarm manager
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
//make the myIntent a pending intent?
pending_intent = PendingIntent.getBroadcast(AlarmParameters.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//tell alarmManager to send the pending intent at the time selected by the timepicker (in calendar now)
alarmManager.set(AlarmManager.RTC_WAKEUP, mcurrentTime.getTimeInMillis(), pending_intent);//error here
Log.e("BUTTON", "alarm set");
finish();
}
});
}}
不幸的是,我收到一个NullPointerException,这意味着我的日历设置不正确,当我与AlarmManager一起使用时,它是空的?
java.lang.NullPointerException: Attempt to invoke virtual method 'long java.util.Calendar.getTimeInMillis()' on a null object reference
at xxxxxx.englishalarmclock.AlarmParameters$2.onClick(AlarmParameters.java:95)
所以我想问题归结为我在TimePickerDialog中说这些的地方。
//store time picked in the calendar
mcurrentTime.set(Calendar.HOUR_OF_DAY, selectedHour);
mcurrentTime.set(Calendar.MINUTE, selectedMinute);
我试着在BTN_SET_ALARM.SetonClickListener中设置日历...但是我不知道在TimePickerDialog东西之外如何使用int selectedHour/minute(onTimeSet()的参数)。当我尝试在onTimeSet()内设置selectedHour/minute的公共变量时,它说这是不允许的。
所以,最后我有三个问题:
1.当我在onTimeSet()中设置选定的小时/分钟值时,为什么日历没有收到这些值?
2.为什么我“不允许”在onTimeSet()中设置一个公共变量?
3.如何使用onTimeSet()之外的SelectedHour/Minute变量?
谢谢你抽出时间!
还有,如果你看到我还有什么不对的地方,或者我可以做得更好,请告诉我!我是来学习的!\(••)/
重新声明mCurrentTime。只需删除final Calendar行的
final Calendar
mcurrentTime=Calendar.getInstance();
null 那么,为什么它在logcat中写的是它的23.03.2012或25.03.2012,而不是今天的日期2012年04.23?我已经浪费了我的时间,谁能告诉我正确的方法设置警报,请?
问题内容: 我似乎无法弄清楚为什么我的JFrame为空。我要去哪里错了? 导入javax.swing。*; 导入java.awt.FlowLayout; 公共类GUIExample扩展JFrame { } 问题答案: 您忘记在jFrame中添加contentPane了,就像这样 我注意到您正在使用继承来构建jFrame,因此在这种情况下,您需要实例化自己的类。我已经用最小的代码重构了您的代码以运行
流程 获取闹钟列表 获取设备的闹钟列表 接口定义 Swift: RokidMobileSDK.skill?.alarm.getList(deviceId: String, completion: @escaping (error: RKError?, alarms: [SDKAlarm]?) -> Void) Objc: [RokidMob
闹钟 Alarm 流程 获取闹钟列表 请求获取设备上的闹钟列表: Java: RokidMobileSDK.skill.alarm().getList(deviceId, new GetAlarmListCallback { @override public void onSucceed(List<SDKAlarm> alarmList) { //...
您可以在 M600 设置响铃的闹钟。当闹钟响起时,M600 会振动并显示一张小卡。 请注意,当您在 M600 上设置闹钟时,闹钟不会在您的手机上响起。 设置闹铃 按下侧边电源按钮打开应用程式菜单,找到并轻触Alarm (闹钟)。 在时钟圈中设置所需的小时。您也可以在圈中心看到小时设置。如果您使用 12 小时制,轻触选择am(上午)或pm(下午)。 轻触圈中心的分钟数,设置所需的分钟。 在分钟圈中设
获取闹钟列表 获取设备的闹钟列表 接口定义 Swift: RokidMobileSDK.skill?.alarm.getCloudList(deviceId: String, completion: @escaping (error: RKError?, alarms: [SDKAlarm]?) -> Void) Objc: [RokidM