Android Warum (View view)?

raptus93

Mitglied
Ich bin ein wenig erfahren mit Java, aber kaum mit Androidentwicklung.
Ich stieß auf folgender Zeile Code:
Java:
public void calculate(View view){
...Methodenrumpf...
}
Diese Methode wird in der XML vom Button aus aufgerufen á la
[XML]
android😱nClick="calculate"
[/XML]
Ich hoffe diese Infos reichen, ansonsten poste ich gerne auch mehr.
Ich programmiere ein Tutorial nach. Erstmal ließ ich den Parameter weg ("Wer braucht denn sowas?"), aber der Code funktionierte nicht. Als ich es reinschrieb (Blind, ohne es zu verstehen), funktionierte der Code. Innerhalb der Methode wird der Parameter NICHT benutzt. Er wird nur übergeben.

Außerdem wird in der XML-Datei bei dem onClick kein Parameter vom Typ View übergeben.

1. Frage: Warum übergibt der Mensch im Tutorial eine View?
2. Frage: Warum funktioniert es nicht auch ohne diesen Parameter, wenn er nicht genutzt wird?
3. Frage: Wie ist er drauf gekommen, dass man die View braucht? (Spekulationen sind willkommen)
4. Frage: Kann man in XML-Methodenaufrufen (oder eher Methodenlinks) Parameter übergeben?
5. Frage: :shock:

Ich freue mich auf Antworten,

Gruß, raptus93
 
Zuletzt bearbeitet:
Die Methode calculate ist hier offenbar ein Ereignishandler

Java:
private class BtnHandler implements OnClickListener
{

	@Override
	public void onClick(View btn)
	{

	}
}

Dein calculate entspricht hier onClick.
Der Parameter View sagt dir, von welchem Button das Ereignis gekommen ist.
 
Was der Luebbi sagt stimmt völlig, das Zauberwort ist hier aber auch: Reflection.
Mit der Zeile [c]android😱nClick="calculate"[/c] sagst du Android, dass diese Methode der OnClickListener des Buttons sein wird. Da die onClick-Methode einen View übergibt wird es der Einfachheit halber auch so gemacht. Der Grund? Es kann ja sein, dass du diesen Handler mehreren Views zuweist und dann musst du ja wissen, wer der Urheber war.

BTW: ich will nicht die UI diktieren lassen, welche Methode eine Activity oder ein Fragment implementiert, daher setze ich die Handler immer selbst. Ob das jetzt gut oder schlecht ist... kA... Wohl eher einfach Geschmackssache.

Grüsse
 
PS: Der JavaMeister hat in einem auch recht: Fang klein an und beschäftige dich erst mal intensiver mit Java, denn dann hättest du die Fragen nicht mal stellen müssen... Sorry... Musste raus... :-D
 

Zurück
Oben