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

在 xml 和以下代码中定义 editText 和 Button 在您的活动中:

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

现在添加这两个函数来调用 DatePicker Dialog 并在 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 回答