Я пытаюсь создать запланированные уведомления в своем приложении для Android с помощью диалогового окна «Выбор времени и даты», чтобы установить время и дату.Диалог выбора времени пуст. Открывает пустой вид
Когда я бегу APK,
Выбор даты работ. Кнопка «Напоминание» создает уведомление о данной дате. Однако кнопка выбора времени открывает диалоговое окно с небольшим фрагментом без содержимого или вида (например, ниже). Поэтому я предполагаю, что диалоговое окно Time Picker Dialog не называется каким-то образом.
Это скриншот после нажатия кнопки СОХРАНИТЬ. (Сохранить кнопку на самом деле кнопку, чтобы открыть Диалог выбора времени. Слишком ленив, чтобы менять имена)
Я вложил весь свой код здесь. Пожалуйста, Выполните следующие вопросы:
1. Почему Диалог выбора времени не отображается? Пожалуйста, скажи мне, что я пропустил.
2. У меня возникают сомнения в моих обратных вызовах Time Picker. Выбраны ли значения времени, возвращаемого setAlarm()?
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();
}
});
}
showTimePickerDialog
метод:
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);
}
showDatePicker
метод:
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");
}
setAlarm
метод:
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));
}
}
Можете ли вы указать на мой код и объяснить? – pblead26
Вы можете легко найти множество примеров TimePickers в фрагментах. Например, здесь. Вы должны искать DialogFragments. http://stackoverflow.com/questions/6668619/how-to-create-datepicker-and-timepicker-dialogs-in-fragment-class – juanlugm