2012-06-13 4 views
1

J'ai un FromDate EditText auquel j'ai ajouté une image. Maintenant, quand je clique sur l'image, un Datepicker est affiché. Maintenant, quand je choisis une date et cliquez sur SetButton, la date est définie dans le EditText. Le problème est que, lorsque je clique sur Annuler Button, le sélecteur de date est parti et l'activité précédente ne prend pas le focus jusqu'à ce que j'appuie sur Retour! Aucun événement tactile ne fonctionne à l'écran. S'il vous plaît aider ...Bouton Annuler sur datepicker Android

Répondre

7

Je ne crois pas que ce pourrait être la meilleure façon de le faire ... mais comment le code suivant fonctionne; a obtenu quelques conseils de ce lien 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(); 
       } 
      } 
      }); 

Depuis que j'ai une livraison de projet, cela fonctionne pour moi now.However, je suis toujours à la recherche d'une façon décente de gérer cela. La plate-forme Android ne gère-t-elle pas le bouton Annuler comme pour les autres boîtes de dialogue?

1

J'ai mis en œuvre sélecteur de date avec la gestion des événements et annuler le travail avec EditText .. Peut-être il aider quelqu'un qui veut effacer du texte sur l'événement .. annuler

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