Aus dem Kurs: Android-Apps entwickeln: Tipps und Tricks

Mit einer Snackbar-Benachrichtigung arbeiten

Aus dem Kurs: Android-Apps entwickeln: Tipps und Tricks

Mit einer Snackbar-Benachrichtigung arbeiten

Fast jede Android-App muss Benachrichtigungen an Benutzer weitergeben, sei es, dass es um Statusmeldungen geht oder um Mitteilungen, weil irgendwelche Prozesse nicht so funktionieren, wie sie sollten. Klassischerweise stellt die SDK sogenannte Toast-Nachrichten bereit, die leicht umzusetzen und leicht einzubinden sind und die unabhängig von Activities laufen. Es gibt aber auch die Möglichkeit, zum Beispiel mit sogenannten Snackbars zu arbeiten und wie das funktioniert, zeige ich Ihnen jetzt. Ich bin jetzt also hier in der MainActivity vom Tip001, der Übungsdatei, und werde hier einen Toast einrichten. Dazu gehe ich zu meiner runCode-Methode und nach meinem Log-Eintrag füge ich jetzt noch einen Toast hinzu, klicke dann auf die Tab-Taste und brauche jetzt hier nur noch eine kurze Meldung einfügen: "This is a Toast message". So, ich speichere das Ganze und damit sollte ich meine App schon starten können und eine Toast-Benachrichtigung absetzen können. So, hier ist jetzt die Darstellung vom ersten Tipp und wenn ich hier auf Run Code klicke, taucht tatsächlich hier auch die Toast-Benachrichtigung auf. Im Moment ist die Darstellungslänge noch auf Short gesetzt, ich kann das Ganze aber auch auf eine lange Anzeigendauer setzen. Ich könnte sogar noch bestimmen, wie lange diese Anzeigedauer tatsächlich ist. Ich speichere das Ganze, lasse es noch mal laufen, um Ihnen nämlich jetzt zu zeigen, was passiert. Wenn ich jetzt auf Run Code klicke, bleibt die Nachricht. Wenn ich jetzt öfters auf Run Code klicke und dann schließe, bleibt die Nachricht noch immer erhalten. Und jetzt sehen Sie, was eins der Probleme bei einer Toast-Benachrichtigung ist: Sie läuft unabhängig von der Activity, mit der sie kommt und das kann dann im übelsten Fall dazu führen, dass ein Benutzer Ihrer App genau diese Benachrichtigungen für Ihre App ausschaltet. Dann kann es nämlich sein, dass der Benutzer oder die Benutzerin einfach in die Einstellungen geht und dort bei den App Notifications, also bei den Benachrichtigungen, genau in Ihrer App die Benachrichtigungen ausschaltet. Und wenn Sie dann versuchen, Ihre Benachrichtigungen an den Mann oder an die Frau zu bringen, dann werden diese einfach nicht mehr angezeigt. Das heißt, ich habe mit den Toast-Benachrichtigungen zwei Probleme. Das eine Problem ist, dass sie unabhängig von der Activity laufen, das heißt, sie können noch ewig weiter laufen, auch wenn die Activity selbst schon abgeschlossen ist. Und der zweite Punkt besteht darin, dass Benutzer diese Benachrichtigungen ausschalten können. Das heißt Benachrichtigungen, die der Entwickler oder die Entwicklerin an den Mann oder an die Frau bringen will, finden dann einfach ihr Ziel nicht mehr. Deswegen gibt es seit Android 5.1 die Möglichkeit, statt mit Toast-Benachrichtigungen mit sogenannten Snackbar-Benachrichtigungen zu arbeiten. Snackbar-Benachrichtigungen ihrerseits sind an eine Activity geknüpft und werden automatisch gemeinsam mit dieser Activity beendet. Und Snackbar-Benachrichtigungen sind sehr effektiv, was das optische Erscheinungsbild anbelangt, vor allem dann, wenn sie in einem koordinierenden Layout zum Einsatz kommen. Ich habe jetzt hier in meinen Layout-Dateien auch tatsächlich so ein CoordinatorLayout, welches alle anderen Elemente ummantelt. Und diese einzelnen Elemente sind weiter untergebracht in meiner content_main-Datei, aber wichtig ist, dass ich diese Snackbar-Information an dieses CoordinatorLayout knüpfen kann. Und damit ich das tun kann, braucht dieses CoordinatorLayout vor allem mal eine Möglichkeit, angesprochen werden zu können und das ist eine ID. Ich setze also eine ID und nenne diese ID coordinator_layout, speichere diese Datei und habe jetzt die Grundlage gesetzt, um in meiner MainActivity eine weitere Weiche stellen zu können. Und zwar möchte ich ein neues Feld erzeugen, und zwar ist es ein privates Feld, das bezieht sich auf das CoordinatorLayout und ich nenne es mCoordinator. So, mit dem erledigt, muss ich jetzt natürlich auch noch einen Code für eine Referenz auf dieses Feld hinzufügen und das mache ich in meiner onCreate-Methode, indem ich hier einfach diese Referenz einfüge. So, damit habe ich jetzt eigentlich schon alle Voraussetzungen getroffen, um eine Snackbar-Benachrichtigung absetzen zu können. Und das wiederum mache ich in meiner runCode-Methode, aber zu allererst werde ich hier mal den Toast auskommentieren. Den brauche ich jetzt so nicht, sondern füge eine Snackbar-Benachrichtigung ein. So, diese Snackbar-Benachrichtigung funktioniert ganz ähnlich wie vorher schon die Toast-Benachrichtigung, nur dass ich hier eben meine View mitgebe und hier habe ich meine Snackbar-Benachrichtigung und auch hier gebe ich eine Länge ein und schließe das Ganze mit einer show-Methode ab. Ich speichere und werde mir jetzt das Ganze wieder anzeigen lassen. So, hier startet die App und wenn ich jetzt auf Run Code klicke, sehen Sie hier unten die Snackbar-Benachrichtigung. Und das Tolle ist, dass man die sogar wegschieben kann. Das heißt, der Benutzer, wenn er jetzt keine Zeit hat oder sie sich nicht ansehen will, schiebt sie weg und kann weiter tun, was zu tun ist. Und eine Snackbar-Benachrichtigung hat noch einen weiteren Vorteil: Es ist nämlich möglich, innerhalb dieser Snackbar-Benachrichtigung auch noch zum Beispiel einen Button unterzubringen, um eine Aktion anzustoßen. Auch das möchte ich Ihnen noch ganz gerne zeigen. Und zwar mache ich das, indem ich hier bei der Snackbar noch weiteren Code einfüge, und zwar vor der showButton-Methode. Und in diesem Fall ist es eine setAction-Methode und die braucht entweder eine Zeichenkette als Quelle oder ein Literal und dann ein ClickListener-Element. Okay, auch hier habe ich jetzt eine kurze Toast-Benachrichtigung und wenn ich das jetzt in meiner App wieder laufen lassen möchte, dann werde ich am Anfang nichts sehen, weil ich ja noch bei meinen Einstellungen die Benachrichtigungen ausgeschaltet habe. Das heißt, ich muss hier erst mal wieder die Benachrichtigungen einschalten, damit ich diese Toast-Nachricht sehen kann. Und wenn ich dann auf meine App wechsle und die runCode-Benachrichtigung habe, habe ich hier die Möglichkeit, die Toast-Nachrichten mir anzeigen zu lassen oder eben eine beliebige andere Aktion zu setzen. Das heißt, Snackbar-Benachrichtigungen sind vielseitig einsetzbar, sind nicht so sehr abhängig von der Wegschaltung von Benachrichtigungen und sind an eine Activity gekoppelt, das heißt, wenn ich diese Activity schließe, dann ist auch diese Snackbar-Benachrichtigung weg. Und damit bietet sie gegenüber den klassischen Toast-Mitteilungen durchaus eins, zwei Vorteile.

Inhalt