Hallo,
bislang habe ich "nur" an verschiedenen iOS und WP Projekten gearbeitet und entwickle nun meine erste Android App. Hierbei konnte ich bislang nicht herausfinden, wie man eigene Controls erstellen kann, bzw. ob dies überhaupt möglich/vorgesehen ist.
Ich meine z.B. etwas wie den DatePicker. Von anderen Plattformen kenne ich dies als eigenständiges Control, dass sich komplett selbst um seine Anzeige uns seien Daten kümmert.
Unter WP wäre das z.B. so:
- Picker ist eigenes Control.
- Auf irgendeiner Seite/View liegt also ein Picker-Button
- Klickt der Nutzer den Picker-Button an, geht kein Click-Event an die Seite sondern, die Picker-Button Klasse kümmert sich selbst um die Anzeige des eigentlichen Picker Dialogs.
- Der Nutzer wählt das Datum aus, der Dialog wird geschlossen und die Seite erfährt z.B. über ein OnDateChanged Event, dass ein neues Datum gewählt wurde.
Unter Android sehe ich bislang nur folgenden anderen Weg:
- Um einen DatePicker anzuzeigen platziert man auf einer Seite/Fragement/Activity irgendein klickbares Element.
- Seite/Fragement/Activity reagiert auf den Klick und erstellt ein neues DialogFragment und zeigt diese an.
- Das DatePickerFragment benachrichtigt die aufrufende Seite über onDateSet über das gewählte Datum.
Während das Zurückliefern des Datums in beiden Fällen ähnlich verläuft ist der Anfang, also das Erstellen des Pickers, gänzlich unterschiedlich. Im ersten Fall ist die Funktionalität in einer eigenen Control/Klasse gekapselt die überall wiederverwenden kann. Wie genau der Picker angezeigt wird, ist der Seite die den Picker enthält komplett egal. Diese empfängt am Ende nur das Ergebnis. Ob dazwischen ein Fragment, eine Activity oder irgendetwas anderes angezeigt wurde ist nicht wichtig. Durch die Kapselung kann derselbe Code an beliebig vielen Stellen genutzt werden und muss nur einmal geschrieben werden.
Im zweiten Fall muss sich jede Seite/Activity die einen DatePicker anzeigen will selber dessen Erstellung und Anzeige kümmern. Der gleiche Code muss immer und immer wieder geschrieben werden.
Der erste Fall ist also deutlich effizienter. Aber ist das bei Android überhaupt möglich so vorzugehen? Woher sollte eine DatePicker Klasse die notwendigen Informationen haben um ein Fragment oder eine Activity selbständig anzeigen zu können? Geht das also gar nicht?