2012-06-13 52 views
1

我有一個FromDate EditText我添加了一個圖像。現在,當我點擊圖片時,顯示Datepicker。現在,當我選擇日期並點擊設置Button,日期設置在EditText。問題在於,當我點擊取消Button時,日期選取器消失,並且在按下「返回」前,前導活動無法獲得焦點!沒有觸摸事件在屏幕上工作。 請幫助...取消datepicker上的按鈕android

回答

7

我不認爲這可能是最好的方式來做到這一點...但一些如何下面的代碼工作;從這個鏈接 https://stackoverflow.com/a/4981308/840520

dialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.cancel), new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       if (which == DialogInterface.BUTTON_NEGATIVE) {     
        dialog.dismiss(); 
        onBackPressed(); 
       } 
      } 
      }); 

因爲我有一個項目交付,這now.However對我的作品得到了一些指導,我還在尋找處理這一個體面的方式。 Android平臺不會像處理其他對話框那樣處理取消按鈕嗎?

1

我已實施日期選擇器與取消事件處理和與EditText上工作..也許它幫助別人誰願意清除取消事件文本..

private EditText dob; 
    static final int DATE_DIALOG_ID = 0; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.browse); 


     dob = (EditText) findViewById(R.id.txtDob); 
       /* For DOB EditText */ 
     dob.setOnTouchListener(new OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       if (v == dob) 
        showDialog(DATE_DIALOG_ID); 
       return false; 
      } 
     }); 
} 


    @Override 
    protected Dialog onCreateDialog(int id) { 
     final int cyear, cmonth, cday; 

     if (dob.getText().equals("")) { 
      Calendar c = Calendar.getInstance(); 
      cyear = c.get(Calendar.YEAR); 
      cmonth = c.get(Calendar.MONTH); 
      cday = c.get(Calendar.DAY_OF_MONTH); 
     } else { 
      String[] datestr = dob.getText().toString().split("-"); 
      cyear = Integer.parseInt(datestr[0]); 
      cmonth = Integer.parseInt(datestr[1]); 
      cday = Integer.parseInt(datestr[2]); 
     } 
     switch (id) { 
     case DATE_DIALOG_ID: 
      // return new DatePickerDialog(this, mDateSetListener, cyear, 
      // cmonth,cday); 
      DatePickerDialog dateDlg = new DatePickerDialog(this, 
        new DatePickerDialog.OnDateSetListener() { 
         public void onDateSet(DatePicker view, int year, 
           int monthOfYear, int dayOfMonth) { 
          String date_selected = String.valueOf(year) 
            + "-" 
            + ((String.valueOf(monthOfYear + 1) 
              .length() == 1 ? "0" 
              + String.valueOf(monthOfYear + 1) 
              : String.valueOf(monthOfYear + 1))) 
            + "-" 
            + ((String.valueOf(dayOfMonth).length() == 1 ? "0" 
              + String.valueOf(dayOfMonth) 
              : String.valueOf(dayOfMonth))); 
          dob.setText(date_selected); 

         } 

        }, cyear, cmonth, cday); 
      dateDlg.setTitle(getString(R.string.dob)); 
      dateDlg.setCancelable(false); 
      dateDlg.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
         dob.setText(""); 
         dialog.dismiss(); 

         } 
        }); 

      return dateDlg; 

     } 
     return null; 
    }