2012-07-06 14 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; 
     } 
相關問題