0

Я пытаюсь создать запланированные уведомления в своем приложении для Android с помощью диалогового окна «Выбор времени и даты», чтобы установить время и дату.Диалог выбора времени пуст. Открывает пустой вид

Когда я бегу APK,

Выбор даты работ. Кнопка «Напоминание» создает уведомление о данной дате. Однако кнопка выбора времени открывает диалоговое окно с небольшим фрагментом без содержимого или вида (например, ниже). Поэтому я предполагаю, что диалоговое окно Time Picker Dialog не называется каким-то образом.

enter image description here Это скриншот после нажатия кнопки СОХРАНИТЬ. (Сохранить кнопку на самом деле кнопку, чтобы открыть Диалог выбора времени. Слишком ленив, чтобы менять имена)

Я вложил весь свой код здесь. Пожалуйста, Выполните следующие вопросы:

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)); 


     } 

}

ответ

0

Вы делаете это в порядке oposite.

Вы создаете фрагмент и показываете его, и после этого вы создаете timepicker и возвращаете его.

Вы должны создать timepicker, поместить его в фрагмент, а затем показать фрагмент.

+0

Можете ли вы указать на мой код и объяснить? – pblead26

+0

Вы можете легко найти множество примеров TimePickers в фрагментах. Например, здесь. Вы должны искать DialogFragments. http://stackoverflow.com/questions/6668619/how-to-create-datepicker-and-timepicker-dialogs-in-fragment-class – juanlugm

 Смежные вопросы

  • Нет связанных вопросов^_^