【发布时间】:2016-01-30 16:32:49
【问题描述】:
我已经在我的活动中实现了日期选择器对话框,它工作正常。当我单击取消时,选择器被关闭,因此按钮起作用。但是,我想捕获取消按钮事件并向其添加更多代码以完成活动,但我似乎无法处理。 这是我的代码:
public class DatePickerActivity extends Activity {
static final int DATE_PICKER_ID = 1111;
private int year;
private int month;
private int day;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_date_picker);
// Get current date by calender
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
showDialog(DATE_PICKER_ID);
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_PICKER_ID:
// open datepicker dialog.
// set date picker for current date
// add pickerListener listner to date picker
return new DatePickerDialog(this, pickerListener, year, month,day);
}
return null;
}
private DatePickerDialog.OnDateSetListener pickerListener = new DatePickerDialog.OnDateSetListener() {
// when dialog box is closed, below method will be called.
@Override
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
year = selectedYear;
month = selectedMonth;
day = selectedDay;
// Show selected date
Log.d("Date selected", String.valueOf(new StringBuilder().append(month + 1)
.append("-").append(day).append("-").append(year)
.append(" ")));
Intent intent = new Intent();
intent.putExtra("year", String.valueOf(new StringBuilder().append(year )));
intent.putExtra("month", String.valueOf(new StringBuilder().append(month + 1)));
intent.putExtra("day", String.valueOf(new StringBuilder().append(day)));
setResult(RESULT_OK, intent);
finish();
}
};
}
我尝试的是添加这个 onclick 方法,例如:
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
if(which==Dialog.BUTTON_NEGATIVE)
{
Log.i("dialog click", "dialog negative button clicked");
dialog.dismiss();
}
}
但这不起作用。有什么建议吗?
【问题讨论】:
-
感谢您的回复@DanielNugent。我的意思是使用我上面的代码,您的建议需要对整个代码采用不同的方法。
-
看起来不会有太大变化,您基本上可以将已接受答案中的代码添加到您的
onCreateDialog()代码中。而不是return new DatePickerDialog(),您需要一个 DatePickerDialog 参考,例如DatePickerDialog ref = new DatePickerDialog(),在引用上调用setButton(),然后返回。 -
效果很好!!我实现了你的解决方案
标签: android android-datepicker