optionsMenu をオーバーライドしたアクティビティがあります。前の勤務表を取得するための 3 つのボタン、次の勤務表を取得するための 3 つのボタンがあり、オプション メニューの 3 番目のボタンは、ユーザーが見たい勤務表の日付を選択できるデータピッカーを表示する必要があります。オプションメニュー内の「今日」ボタンにDatePickerリスナーをアタッチするにはどうすればよいですか?
public void setCurrentDateOnView() {
dpResult = (DatePicker) findViewById(R.id.datepicker1);
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
// set current date into datepicker
// dpResult.init(year, month, day, null);
}
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menurotadetails, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.previous:
DateTime now2 = nfcscannerapplication.getDate();
Log.e(TAG, "now2 = " + now2);
DateTime dateTimePlusOne2 = now2.minusDays(1);
Log.e(TAG, "now2 after -1 = " + dateTimePlusOne2);
nfcscannerapplication.setDate(dateTimePlusOne2);
DateTimeFormatter fmt2 = DateTimeFormat.forPattern("d-MMM-Y");
String nextDay2 = fmt2.print(dateTimePlusOne2);
Intent i2 = new Intent(this, NfcscannerActivity.class);
i2.putExtra("nextRota", nextDay2);
i2.setAction("NEXT_ROTA");
startActivity(i2);
return true;
case R.id.next:
DateTime now = nfcscannerapplication.getDate();
Log.e(TAG, "now = " + now);
DateTime dateTimePlusOne = now.plusDays(1);
Log.e(TAG, "now after +1 = " + dateTimePlusOne);
nfcscannerapplication.setDate(dateTimePlusOne);
DateTimeFormatter fmt = DateTimeFormat.forPattern("d-MMM-Y");
String nextDay = fmt.print(dateTimePlusOne);
Intent i = new Intent(this, NfcscannerActivity.class);
i.putExtra("nextRota", nextDay);
i.setAction("NEXT_ROTA");
startActivity(i);
return true;
case R.id.today:
setCurrentDateOnView();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void addListenerOnButton() {
??????.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
// set date picker as current date
return new DatePickerDialog(this, datePickerListener, year, month,
day);
}
return null;
}
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
// when dialog box is closed, below method will be called.
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
year = selectedYear;
month = selectedMonth;
day = selectedDay;
// set selected date into datepicker also
dpResult.init(year, month, day, null);
}
};
. [更新] 申し訳ありませんが、よく考えていませんでした。次のことを行いました。
case R.id.today:
setCurrentDateOnView();
showDialog(DATE_DIALOG_ID);
return true;