Rückfragen unter Android
Das folgende Code-Stück zeigt, wie eine Rückfrage nach einer Benutzereingabe realisiert werden kann.
Bisher war es möglich, daß ein vielleicht wichtiger Zählerstand unwiderbringlich verloren ging, nachdem versehentlich der Taster zum Zurücksetzen betätigt wurde.
Zunächst wird ein Antrag »builder« erstellt, in den die Eigenschaften der Rückfrage mit »setTitle«, »setMessage«, »setPositiveButton« und »setNegativeButton« eingetragen werden.
Dabei werden hauptsächlich die Texte für die verschiedenen Flächen der Nachfrage festgelegt.
Im Aufruf von »setPositiveButton« und »setNegativeButton« wird eine Prozedur »onClick« übergeben, die im Falle von »setPositiveButton« dann tatsächlich den Zählerstand löscht. Dadurch wird es erreicht, daß der Zählerstand nur dann gelöscht wird, wenn der Benutzer auch die Nachfrage des Dialogs bestätigt hat. In diese Falle wird dann auch noch ein kleines Textfenster (ein sogenannter „Toast“) angezeigt, der das Löschen bestätigt.
- source
{ final android.app.AlertDialog.Builder builder
= new android.app.AlertDialog.Builder( CounterView.this.getContext() ); builder.setTitle( "counter reset" );
builder.setMessage( "do you really want to reset the counter?" ); builder.setPositiveButton
( "yes!",
new android.content.DialogInterface.OnClickListener()
{ public void onClick
( final android.content.DialogInterface dialog, int button )
{ android.widget.Toast.makeText
( CounterView.this.getContext(), "ok, counter is reset.",
android.widget.Toast.LENGTH_SHORT ).show(); CounterView.this.reset(); }} ); builder.setNegativeButton
( "no!",
new android.content.DialogInterface.OnClickListener()
{ public void onClick
( final android.content.DialogInterface dialog, int button ){} } ); { final android.app.AlertDialog confirmDialog = builder.create();
confirmDialog.show(); }}
In der vorletzten Zeile des obenstehenden Quelltextes wird der Antrag »builder« dann mit Hilfe von »create()« eingereicht, um einen Dialog »confirmDialog« zu erhalten. Jener Dialog wird alsdann mit Hilfe von »show()« angezeigt. Er blockiert dadurch die darunterliegende Aktivität (also die beiden Taster »increment« und »reset«), aber er verschwindet auch wieder, sobald der Benutzer eine der beiden Tastflächen des Dialoges betätigt hat.
Die Ausgabe eines Toasts wird hier nicht empfohlen, da sie vom Autor eher als störend empfunden wird. Sie befindet sich trotzdem in diesem Programmfragment, um einmal zu zeigen, wie ein Toast angezeigt werden kann.
Übungsaufgaben
/ Übungsaufgabe
Bauen Sie das Code-Stück an die richtige Stelle ein, so daß es immer aktiviert wird, nachdem die Tastfläche »reset« aktiviert wurde.