Dies ist eine alte Version des Dokuments!


Android

Diese Seite soll eine Sammlung von Tipps und Tricks zur Android-Entwicklung werden. Im Grund genommen ist sie mein Notizblock für Kleinigkeiten, die mir im Laufe der Zeit aufgefallen sind.

Allgemein

  • Vom onClick Attribut in den XML Layout Files kann man nur abraten. Es ist eine bessere Lösung in der onCreate() einfach für die Buttons entsprechende onClickListener zu definieren.

Daten

  • Um Daten für Activities (und Fragments) bereitzustellen, die nicht als Ressource registriert sind, eignen sich am besten Loader ggf. in Kombination mit Adaptern.
  • „Because onSaveInstanceState() is not guaranteed to be called, you should use it only to record the transient state of the activity (the state of the UI)—you should never use it to store persistent data. Instead, you should use onPause() to store persistent data (such as data that should be saved to a database) when the user leaves the activity.“ [Quelle: Android Dokumentation]
  • onRestoreInstanceState() wird nach onCreate() aufgerufen, wenn die Activity beendet und wieder gestartet wurde, so dass onSaveInstanceState() den Zustand gespeichert hat.
  • Daten eines ContentProvider können über ContentResolver.query() oder Activity.managedQuery() abgefragt werden. Der Unterschied liegt darin, dass letztere dafür sorgt, dass die Activity sich um den Cursor mit dem Ergebnis kümmert und ihn bspw. wiederherstellt, wenn die Activity neu gestartet wird.

Fragments

  • Referenz: Fragments
  • In XML Layout-Files sollte man <fragment /> nur benutzen, wenn man nicht plant das Fragment zu ersetzen.
  • Sollen Fragments ausgetauscht werden, sollte man dafür im Layout ein <FrameLayout /> vorsehen und dieses in der onCreate() der Activity per Transaction durch das Start-Fragment ersetzen.

Orientierung

  • Man kann einen Ordner layout-land/ in den Resources anlegen, um spezielle Layouts für Landscape-Orientierung der Anwendung zu definieren.
  • Wenn das Gerät gedreht wird, wird onConfigurationChanged aufgerufen und die Activity neu erzeugt. In diesem Fall erhält die onCreate() ein Bundle übergeben mit Informationen über den wiederherzustellenden Zustand.