날짜/시간 구성 요소를 만들었지 만 자동으로 생성되었습니다 (XML 레이아웃으로 만들었으므로 수동으로 생성하고 싶지는 않습니다).하지만 참조를 대화 상자를 만들려면 Activity
. 어떻게하면 될까요? 내가 findViewById
후 세터를 시도했지만이 좋은 해결책이 아니다 ...액티비티 참조를 내 구성 요소에 전달하는 방법
public class DateTimeComponent extends RelativeLayout {
private Activity activity;
public DateComponent(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
// rest ommited
initFields();
}
private void initFields() {
dateEditText = (EditText) findViewById(R.id.dateEditText);
dateEditText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
activity.showDialog(DATE_PICKER_DIALOG);
}
});
timeEditText = (EditText) findViewById(R.id.timeEditText);
timeEditText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
activity.showDialog(TIME_PICKER_DIALOG);
}
});
}
// rest ommited
public Dialog getDatePickerDialog() {
int year = selectedDateTime.get(YEAR);
int month = selectedDateTime.get(MONTH);
int day = selectedDateTime.get(DAY_OF_MONTH);
return new DatePickerDialog(activity, onDateSetListener, year, month, day);
}
public Dialog getTimePickerDialog() {
int hour = selectedDateTime.get(HOUR_OF_DAY);
int minute = selectedDateTime.get(MINUTE);
return new TimePickerDialog(activity, onTimeSetListener, hour, minute, true);
}
private final OnDateSetListener onDateSetListener = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// do something
}
};
private final OnTimeSetListener onTimeSetListener = new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// do something
}
};
}
생성자를 통해 Activity/Context의 참조를 DateTimeComponent로 전달할 수 있습니다. – adatapost
이 목적을 위해 컨텍스트를 사용할 수 있습니다. – Akram
@Akki 컨텍스트에는'showDialog()'메서드가 없습니다 .. – user219882