2012-06-13 5 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; 
    }

 Смежные вопросы

  • Нет связанных вопросов^_^