3

編集テキスト ボックスがあり、ontouchlistener を呼び出してカスタム ダイアログを表示し、setdate ボタンをクリックすると、日付ピッカーの日付が編集テキストに設定され、ダイアログが閉じられるはずです。しかし、日付ピッカーから日付を取得する方法と編集テキストボックスに設定する方法がわかりません。date.init( year, monthOfYear, dayOfMonth, new MyOnDateChangedListener() ); でエラーが発生しています。エラーは、この行の複数のマーカーです - dayOfMonth を変数に解決できません - year を変数に解決できません - monthOfYear を変数に解決できません

 et4.setOnTouchListener(new OnTouchListener() {
    final Dialog setdatedialog = new Dialog(DropboxActivity.this);                      
    public void onClick(View v) {
    }
    public boolean onTouch(View arg0, MotionEvent arg1) {
    setdatedialog.setContentView(R.layout.datedialog);
    setdatedialog.setTitle("select date of puchase");
    setdatedialog.setCancelable(true);
    setdatedialog.show();
    Button back = (Button)setdatedialog.findViewById(R.id.back3);
    back.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    setdatedialog.dismiss();
    }
    });
    Button setdate=(Button)setdatedialog.findViewById(R.id.setdate);
    DatePicker date = (DatePicker)setdatedialog.findViewById(R.id.datePicker1);                         
    class MyOnDateChangedListener implements OnDateChangedListener {
        public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth){
            et4.setText( "" + dayOfMonth + "-" + (monthOfYear + 1) + "-" + year );
    }
    };
    date.init( year, monthOfYear, dayOfMonth, new MyOnDateChangedListener() );

    return false;
    }
4

2 に答える 2

4

editText と Button を xml で定義し、以下のコードをアクティビティで定義します。

        editText=(EditText) findViewById(R.id.date);
        button=(Button) findViewById(R.id.play);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                showDialog(DATE_DIALOG_ID);
            }
        });

        Calendar c=Calendar.getInstance();
        mYear=c.get(Calendar.YEAR);
        mMonth=c.get(Calendar.MONTH);
        mDay=c.get(Calendar.DAY_OF_MONTH);

これら 2 つの関数を追加して、DatePicker ダイアログを呼び出し、Edittext で日付を設定します。

protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DATE_DIALOG_ID:
            return new DatePickerDialog(this,
                        mDateSetListener,
                        mYear, mMonth, mDay);

        }

        return null;

    }
    private DatePickerDialog.OnDateSetListener mDateSetListener =new DatePickerDialog.OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            mYear = year;
            mMonth = monthOfYear;
            mDay = dayOfMonth;
            editText.setText(new StringBuilder().append(mDay).append("/").append(mMonth+1).append("/").append(mYear));

        }

    };

これをグローバルに定義します。

    static final int DATE_DIALOG_ID = 0;
    private int mYear,mMonth,mDay;

これは、editText で日付を設定するのに役立ちます。

于 2012-07-06T11:34:42.357 に答える
0

使用する必要がありますDatePickerDialog.OnDateSetListener

 private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                String date_selected = (monthOfYear + 1) + "/" + dayOfMonth + "/"
                        + year;

                editText.setText(date_selected);

            }
        };

通常どおりダイアログを作成します

 @Override
        protected Dialog onCreateDialog(int id) {
            switch (id) {
            case 1:
                return new DatePickerDialog(this, mDateSetListener, cyear, cmonth,
                        cday);
            }
            return null;
        }
于 2012-07-06T11:02:40.527 に答える