Sur ma vue, j'ai un bouton qui, lorsqu'il est pressé ouvre un DatePickerDialog. La boîte de dialogue pop upup a un bouton "Terminé". Lorsque j'appuie sur ce bouton, la date sélectionnée est renseignée dans une zone EditText. Maintenant, lorsque j'appuie sur le bouton Précédent (), il remplit toujours la date dans l'EditText. Comment est-ce que je rejette la boîte de dialogue sans retourner de valeur?Quitter DatePickerDialog en appuyant sur le bouton Précédent
C'est le code que j'ai got-
L'activité qui invoque le fragment:
public class TransactionActivity extends FragmentActivity implements iRibbonMenuCallback {
.....
public void selectDate(View view) {
// This is the method invoked by the button
SelectDateFragment newFragment = new SelectDateFragment();
newFragment.show(getSupportFragmentManager(), "DatePicker");
}
public void populateSetDate(int year, int month, int day) {
// Puts the date in the EditText box
mEdit = (EditText)findViewById(R.id.DateText);
mEdit.setText(month+"/"+day+"/"+year);
}
}
Un fragment de la boîte de dialogue (basé sur this page sur les guides de l'API Android):
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
// Calls a method on the activity which invokes this fragment
((TransactionActivity)getActivity()).populateSetDate(yy, mm+1, dd);
}
}
Il ne semble pas exister de méthode analogue à onDataSet pour gérer le cas lorsque les données n'ont pas été définies.
Existe-t-il un moyen d'annuler/de rejeter le datpicker surgi sans obtenir sa valeur?
Merci.
Cela ne semble pas fonctionner. Voilà ce que j'ai essayé: \t 'dialog.setOnKeyListener (nouvelle Dialog.OnKeyListener() { \t \t @Override \t \t OnKey public boolean (DialogInterface arg0, int codeTouche, événement KeyEvent) { \t \t \t if (codeTouche == KeyEvent.KEYCODE_BACK) { \t \t \t \t dialog.dismiss();} return false; \t} }); – Bharat