Android 时间选择器对话框为空。打开一个空白视图
我正在尝试使用时间选择器和日期选择器对话框在我的Android应用程序上创建计划通知,以设置时间和日期 当我运行apk时 日期选择器工作。 设置提醒按钮在给定日期创建通知。 但是,时间选择器按钮会打开一个没有内容或视图的小片段对话框(如下所示)。所以我猜时间选择器对话框并没有被调用 这是单击“保存”按钮后的屏幕截图。(保存按钮实际上是打开时间选择器对话框的按钮。懒得更改名称) 我已将我的全部代码粘贴在这里。 请解决以下疑问: 1。为什么时间选择器对话框不显示?请告诉我我错过了什么。 2。我怀疑我的时间选择器回拨。选定的时间值是否返回到setAlarm()?Android 时间选择器对话框为空。打开一个空白视图,android,alarmmanager,android-notifications,android-datepicker,android-timepicker,Android,Alarmmanager,Android Notifications,Android Datepicker,Android Timepicker,我正在尝试使用时间选择器和日期选择器对话框在我的Android应用程序上创建计划通知,以设置时间和日期 当我运行apk时 日期选择器工作。 设置提醒按钮在给定日期创建通知。 但是,时间选择器按钮会打开一个没有内容或视图的小片段对话框(如下所示)。所以我猜时间选择器对话框并没有被调用 这是单击“保存”按钮后的屏幕截图。(保存按钮实际上是打开时间选择器对话框的按钮。懒得更改名称) 我已将我的全部代码粘贴在这里。 请解决以下疑问: 1。为什么时间选择器对话框不显示?请告诉我我错过了什么。 2。我怀疑
public class ReminderFragment extends FragmentActivity {
// declarations here
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
pHour = hourOfDay;
pMinute = minute;
}
};
private DatePickerDialog.OnDateSetListener ondate =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
pYear = year;
pMonth = monthOfYear;
pDay = dayOfMonth;
}
};
3。有什么我应该添加到清单文件中的吗?
public class ReminderFragment extends FragmentActivity {
// declarations here
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
pHour = hourOfDay;
pMinute = minute;
}
};
private DatePickerDialog.OnDateSetListener ondate =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
pYear = year;
pMonth = monthOfYear;
pDay = dayOfMonth;
}
};
OnCreate
方法:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_set_reminder);
/** Listener for click event of the button */
findViewById(R.id.dialog).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDatePicker();
}
});
findViewById(R.id.set_button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showTimePickerDialog(v) ;
}
});
findViewById(R.id.btnSetReminder).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setAlarm();
}
});
}
public Dialog showTimePickerDialog(View v) {
DialogFragment newFragment = new DialogFragment();
newFragment.show(getSupportFragmentManager(), "timePicker");
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(this, mTimeSetListener, hour, minute,true);
}
private void showDatePicker() {
DatePickerFragment date = new DatePickerFragment();
/**
* Set Up Current Date Into dialog
*/
Calendar calender = Calendar.getInstance();
Bundle args = new Bundle();
args.putInt("year", calender.get(Calendar.YEAR));
args.putInt("month", calender.get(Calendar.MONTH));
args.putInt("day", calender.get(Calendar.DAY_OF_MONTH));
date.setArguments(args);
/**
* Set Call back to capture selected date
*/
date.setCallBack(ondate);
date.show(getSupportFragmentManager(), "Date Picker");
}
public void setAlarm() {
calcal = new GregorianCalendar();
//TODO -- CHANGE TIME HERE
calcal.set(pYear, pMonth, pDay, pHour, pMinute); //change minute and seconds before compiling
Intent alertIntent = new Intent(ReminderFragment.this, AlertReceiver.class);
AlarmManager alarmManager = (AlarmManager)
getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calcal.getTimeInMillis(),
PendingIntent.getBroadcast(ReminderFragment.this, 1, alertIntent,
PendingIntent.FLAG_UPDATE_CURRENT));
}
showTimePickerDialog
方法:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_set_reminder);
/** Listener for click event of the button */
findViewById(R.id.dialog).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDatePicker();
}
});
findViewById(R.id.set_button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showTimePickerDialog(v) ;
}
});
findViewById(R.id.btnSetReminder).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setAlarm();
}
});
}
public Dialog showTimePickerDialog(View v) {
DialogFragment newFragment = new DialogFragment();
newFragment.show(getSupportFragmentManager(), "timePicker");
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(this, mTimeSetListener, hour, minute,true);
}
private void showDatePicker() {
DatePickerFragment date = new DatePickerFragment();
/**
* Set Up Current Date Into dialog
*/
Calendar calender = Calendar.getInstance();
Bundle args = new Bundle();
args.putInt("year", calender.get(Calendar.YEAR));
args.putInt("month", calender.get(Calendar.MONTH));
args.putInt("day", calender.get(Calendar.DAY_OF_MONTH));
date.setArguments(args);
/**
* Set Call back to capture selected date
*/
date.setCallBack(ondate);
date.show(getSupportFragmentManager(), "Date Picker");
}
public void setAlarm() {
calcal = new GregorianCalendar();
//TODO -- CHANGE TIME HERE
calcal.set(pYear, pMonth, pDay, pHour, pMinute); //change minute and seconds before compiling
Intent alertIntent = new Intent(ReminderFragment.this, AlertReceiver.class);
AlarmManager alarmManager = (AlarmManager)
getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calcal.getTimeInMillis(),
PendingIntent.getBroadcast(ReminderFragment.this, 1, alertIntent,
PendingIntent.FLAG_UPDATE_CURRENT));
}
showDatePicker
方法:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_set_reminder);
/** Listener for click event of the button */
findViewById(R.id.dialog).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDatePicker();
}
});
findViewById(R.id.set_button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showTimePickerDialog(v) ;
}
});
findViewById(R.id.btnSetReminder).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setAlarm();
}
});
}
public Dialog showTimePickerDialog(View v) {
DialogFragment newFragment = new DialogFragment();
newFragment.show(getSupportFragmentManager(), "timePicker");
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(this, mTimeSetListener, hour, minute,true);
}
private void showDatePicker() {
DatePickerFragment date = new DatePickerFragment();
/**
* Set Up Current Date Into dialog
*/
Calendar calender = Calendar.getInstance();
Bundle args = new Bundle();
args.putInt("year", calender.get(Calendar.YEAR));
args.putInt("month", calender.get(Calendar.MONTH));
args.putInt("day", calender.get(Calendar.DAY_OF_MONTH));
date.setArguments(args);
/**
* Set Call back to capture selected date
*/
date.setCallBack(ondate);
date.show(getSupportFragmentManager(), "Date Picker");
}
public void setAlarm() {
calcal = new GregorianCalendar();
//TODO -- CHANGE TIME HERE
calcal.set(pYear, pMonth, pDay, pHour, pMinute); //change minute and seconds before compiling
Intent alertIntent = new Intent(ReminderFragment.this, AlertReceiver.class);
AlarmManager alarmManager = (AlarmManager)
getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calcal.getTimeInMillis(),
PendingIntent.getBroadcast(ReminderFragment.this, 1, alertIntent,
PendingIntent.FLAG_UPDATE_CURRENT));
}
setAlarm
方法:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_set_reminder);
/** Listener for click event of the button */
findViewById(R.id.dialog).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDatePicker();
}
});
findViewById(R.id.set_button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showTimePickerDialog(v) ;
}
});
findViewById(R.id.btnSetReminder).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setAlarm();
}
});
}
public Dialog showTimePickerDialog(View v) {
DialogFragment newFragment = new DialogFragment();
newFragment.show(getSupportFragmentManager(), "timePicker");
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(this, mTimeSetListener, hour, minute,true);
}
private void showDatePicker() {
DatePickerFragment date = new DatePickerFragment();
/**
* Set Up Current Date Into dialog
*/
Calendar calender = Calendar.getInstance();
Bundle args = new Bundle();
args.putInt("year", calender.get(Calendar.YEAR));
args.putInt("month", calender.get(Calendar.MONTH));
args.putInt("day", calender.get(Calendar.DAY_OF_MONTH));
date.setArguments(args);
/**
* Set Call back to capture selected date
*/
date.setCallBack(ondate);
date.show(getSupportFragmentManager(), "Date Picker");
}
public void setAlarm() {
calcal = new GregorianCalendar();
//TODO -- CHANGE TIME HERE
calcal.set(pYear, pMonth, pDay, pHour, pMinute); //change minute and seconds before compiling
Intent alertIntent = new Intent(ReminderFragment.this, AlertReceiver.class);
AlarmManager alarmManager = (AlarmManager)
getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calcal.getTimeInMillis(),
PendingIntent.getBroadcast(ReminderFragment.this, 1, alertIntent,
PendingIntent.FLAG_UPDATE_CURRENT));
}
}您正在按操作顺序进行操作 您正在创建片段并显示它,然后创建时间选择器并返回它
您必须创建时间选择器,将其放入片段中,然后显示片段。您可以很容易地在片段中找到许多时间选择器的示例。比如这里。你应该寻找对话片段。