Передать идентификатор из кнопки в диалоговое окно timePicker

1

У меня есть диалог timePicker, который можно вызвать с разных кнопок. Как передать идентификатор, из которого вызывается диалог?

Это соответствующий код:

    //Time picker
    private int pHour;
    private int pMinute;
    static final int TIME_DIALOG_ID = 0;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        /** Get the current time */
        final Calendar cal = Calendar.getInstance();
        pHour = cal.get(Calendar.HOUR_OF_DAY);
        pMinute = cal.get(Calendar.MINUTE);
}

Событие кликов с кнопок:

public void onClick(View v) {

 // Here I should pass the v.getId() to the dialog
 showDialog(TIME_DIALOG_ID);
}

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case TIME_DIALOG_ID:
        return new TimePickerDialog(this,
                mTimeSetListener, pHour, pMinute, false);
    }
    return null;
}

/** Callback received when the user "picks" a time in the dialog */
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
    new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            pHour = hourOfDay;
            pMinute = minute;
            //Here I should know from which v.getId() the dialog was called
        }
    };

Благодарю!

Теги:

1 ответ

1
Лучший ответ

Вам нужно будет написать свой собственный сборщик для того, что вы хотите сделать:

Предполагая, что вы должны называть тот же выборщик для всех кнопок, я предлагаю вам использовать оператор switch на Button

 public void onClick(View v) {

  switch(v.getId()){

  case R.id.Button1:
       showDialog(TIME_DIALOG_ID);
       break;

  case R.id.Button2: 
       showDialog(TIME_DIALOG_ID);
       break;
  }
}

Вы можете использовать различный идентификатор Dialog если вы хотите, чтобы разный Dialog отображался.

  • 0
    Спасибо. Тогда у меня должно быть столько диалогов, сколько кнопок. Я думал, что могу избежать этого.
  • 0
    Но как я могу выбрать разные обратные вызовы с разными идентификаторами диалогов?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню