In Java kannst Du bequem Inline Funktionen und anonyme Inline Klassen erstellen.
Java
class MyClass {
void method() {
alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getActivity().getApplicationContext(), "You clicked on OK", Toast.LENGTH_SHORT).show();
}
});
}
}
ist ungefähr dasselbe wie
Java
class MyClass implements DialogInterface.OnClickListener() {
void method() {
alertDialog.setPositiveButton("OK", this);
}
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getActivity().getApplicationContext(), "You clicked on OK", Toast.LENGTH_SHORT).show();
}
}
und auch das gleiche wie
Java
class MyListener implements DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getActivity().getApplicationContext(), "You clicked on OK", Toast.LENGTH_SHORT).show();
}
}
class MyClass {
void method() {
alertDialog.setPositiveButton("OK", new MyListener());
}
}
Du hast für die Implementierung solcher Interfaces immer diese drei Möglichkeiten.
- Ist nur eine Kleinigkeit, die für jedes 'onClick' anders ist. Mach es als anonyme innere Klasse.
- Ist ne Menge an Aufwand, die für jedes 'onClick' gleich ist. Implementiere das Interface in der aufrufenden Klasse.
- Ist ne Menge an Aufwand, die für jedes 'onClick' unterschiedlich ist. Implementiere das Interface in je eine eigene Klasse.