2012-07-06 15 views
1

我有一个编辑文本框,我打电话给ontouchlistener它显示一个自定义对话框,当我点击setdate按钮时日期选择器应设置编辑文本和对话框应该被解雇。但我不知道如何从日期选择器获取日期以及如何在编辑文本框中设置。我在date.init(year,monthOfYear,dayOfMonth,new MyOnDateChangedListener())中得到错误;并且在该行的错误isMultiple标记 - 请将dayOfMonth不能被解析为 可变 - 一年不能被解析为一个变量 - 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; 
    } 
+0

请缩进你的代码。 – 2012-07-06 10:59:47

回答

2

定义EDITTEXT和巴顿在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); 

现在加上这两个函数调用的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.Hope中设置日期,这将帮助您。

+0

如果未选择日期,如何将错误设置为edittext。对我来说,只有错误图标显示! – 2017-03-31 10:39:00

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; 
     } 
相关问题