2017-05-03 1 views
0

Ich versuche, einen DatePickerDialog zu machen, um eine TextView zu ändern. Aber ich möchte auch einen Toast anzeigen, wenn der Benutzer auf die Schaltfläche "Ok" klickt.Implement OnClickListener in DatePickerDialog, etwas zu tun funktioniert nicht

Also habe ich DatePickerDialog.OnClickListener und DatePickerDialog.OnDateSetListener implementiert und ich beide Methoden überschreiben. Aber nichts geschieht, wenn ich auf den "Ok" -Button am DatePicker klicke. Irgendeine Idee ?

Vielen Dank im Voraus, hier ist mein DatePickerFragment:

@RequiresApi(api = Build.VERSION_CODES.N) 
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener, DatePickerDialog.OnClickListener { 

    public static int year_x; 
    public static int month_x; 
    public static int day_x; 
    public static Calendar calendar = Calendar.getInstance(Locale.FRANCE); 


    @RequiresApi(api = Build.VERSION_CODES.N) 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the picker 
     final Calendar c = Calendar.getInstance(Locale.FRANCE); 
     final int year = c.get(Calendar.YEAR); 
     final int month = c.get(Calendar.MONTH); 
     final int day = c.get(Calendar.DAY_OF_MONTH); 

     DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day); 

     /* 
     // When I do that way and not implement DatePickerDialog.OnClickListener the date is not updated in my TextView switcherDateDay 
     dialog.setButton(DialogInterface.BUTTON_POSITIVE, "ok", new DialogInterface.OnClickListener() { 
      @SuppressLint("ShowToast") 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Toast.makeText(getActivity(), "Test", Toast.LENGTH_LONG).show(); 
      } 
     }); 
     */ 
     return dialog; 
    } 


    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     if(which == DialogInterface.BUTTON_POSITIVE) { 
      Toast.makeText(getActivity(), "Date is selected", Toast.LENGTH_LONG).show(); 
     } 
    } 


    @TargetApi(Build.VERSION_CODES.N) 
    @RequiresApi(api = Build.VERSION_CODES.M) 
    public void onDateSet(DatePicker view, int year, int month, int day) { 
     year_x = view.getYear(); 
     month_x = view.getMonth(); 
     day_x = view.getDayOfMonth(); 

     calendar.set(year_x, month_x, day_x); 
     ScheduleCalendar scheduleCal = new ScheduleCalendar(calendar, 0); 

     TextView switcherDateDay = (TextView) getActivity().findViewById(R.id.schedule_switcher_date); 
     TextView switcherCurrentDay = (TextView) getActivity().findViewById(R.id.schedule_switcher_current_day); 
     switcherDateDay.setText(String.format("%s %s %s", scheduleCal.getDayName(), scheduleCal.getDayNo(), scheduleCal.getMonthName())); 
     switcherCurrentDay.setText(ScheduleSwitcherFragment.statueOfWeek(scheduleCal)); 
    } 
} 

Antwort

1

Zeigen Sie Ihren Toast in onDateSet Methode der Datumsauswahl-Dialog

0

Wenn Sie möchten, tun Sie es auf diese Weise, ich glaube, Sie müssen die DialogInterface.OnClickListener() implementieren (nicht DatePickerDialog.OnClickListener()). Obwohl ich mir nicht sicher bin, warum Sie es nicht so machen würden, wie es in dem auskommentierten Code der OnCreateDialog-Methode gemacht wurde.

Sie müssen auch noch einen OnClickListener zu der Schaltfläche hinzufügen, auf die Capture klicken sollen.

Verwandte Themen