0

Ich öffne Timepicker in Dialogfragment in meiner Fragmentklasse.Timepicker mit DialogFragment Xamarin android

var dialog = new TimePickerDialogFragment(_activity, DateTime.Now, new OnTimeSetListener()); 

        dialog.Cancelable = false; 
        dialog.Show(_fg, null); 

Hier erweitert TimePickerDialogFragment DialogFragment.

public class TimePickerDialogFragment : DialogFragment  
{   
private Activity _activity; 

private DateTime _date; 


private readonly TimePickerDialog.IOnTimeSetListener _listener; 

     public TimePickerDialogFragment(Activity activity, DateTime date, TimePickerDialog.IOnTimeSetListener listener) 
     { 
      _activity = activity; 
      _date = date; 
      _listener = listener; 
     } 

     public override Dialog OnCreateDialog(Bundle savedState) 
    { 
     var dialog = new TimePickerDialog(_activity, _listener, _date.Hour, _date.Minute, true); 
     dialog.SetTitle("Enter Time"+ DateTime.Now.ToString()); 
     return dialog; 
    } 
    } 

Hier ist meine Zuhörer Klasse

public class OnTimeSetListener : Java.Lang.Object, TimePickerDialog.IOnTimeSetListener 

    { 
     public void OnTimeSet(TimePicker view, int hourOfDay, int minute) 
     { 

     } 
    } 

Jetzt habe ich den Titel so schnell aktualisieren möchten als Benutzer eine neue Zeit auswählt, während das Pop-up geöffnet wird. Das OnTimeSet wird aufgerufen, wenn ich im Popup auf die Schaltfläche set klicke. Ich möchte dort nicht updaten. Wie kann ich das erreichen? Gibt es eine andere Möglichkeit, den Dialog zu öffnen, abgesehen davon, dass ich es versuchen kann? Ich bin neu bei Android. Jede Hilfe wird geschätzt.

Antwort

0

Um benachrichtigt zu werden, wenn die Zeit geändert wird, müssen Sie eine Unterklasse von TimePickerDialog erstellen und die Methode OnTimeChanged überschreiben, die aufgerufen wird, wenn der Benutzer die Zeit in der Auswahl ändert. Fügen Sie in der neuen Unterklasse ein Ereignis TimeChanged hinzu und lösen Sie es aus der überschriebenen Methode aus. Im Event-Handler können Sie den Dialogtitel basierend auf der neuen Zeit festlegen.

+0

Vielen Dank für Ihre Antwort. Können Sie mir sagen, wo ich die Unterklasse von TimePickerDialog in meinem Code verwenden soll? Ich habe jetzt verstanden, dass das Überschreiben der OnTimeChanged-Methode meinen Zweck löst, aber ich kann immer noch nicht herausfinden, wo die Referenz für die erstellte Unterklasse übergeben werden soll. – user6186610

+0

Dialog ist nicht länger eine Instanz von 'TimePickerDialog', sondern ein' CustomTimePickerDialog' (Ihre Unterklasse) -Objekt. Zum Beispiel: 'var dialog = neu CustomTimePickerDialog (_activity, _listener, _date.Hour, _date.Minute, true);' –

+0

@ user6186610: Sie werden es in OnCreateDialog anstelle von TimePickerDialog verwenden – Giorgi