0

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;
4

2 に答える 2

0

これを試して

public void setCurrentDateOnView() {
                // your code
                showDialog(DATE_DIALOG_ID);

        });

これがうまくいくことを願っています。

于 2012-09-25T13:10:58.210 に答える
0
case R.id.today:
            setCurrentDateOnView();
            showDialog(DATE_DIALOG_ID);
            return true;
于 2012-10-17T10:55:26.633 に答える