У меня есть диалог 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
}
};
Благодарю!
Вам нужно будет написать свой собственный сборщик для того, что вы хотите сделать:
Предполагая, что вы должны называть тот же выборщик для всех кнопок, я предлагаю вам использовать оператор 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
отображался.