2012-06-13 2 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 나를 위해 작동이 링크에서 몇 가지 지침을 가지고, 나는 아직도이 문제를 처리하는 괜찮은 방법을 찾고 있어요. 안드로이드 플랫폼은 다른 대화 상자처럼 취소 버튼을 처리하지 않습니까? 처리 및 글고 치기와 작품에 이벤트를 취소와

1

내가 구현 한 날짜 선택 ... ..이 이벤트를 취소에 텍스트를 취소하고자하는 사람을 도움이 될 수

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