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:eek: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:

Luebbi

Mitglied
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.
 

JavaMeister

Gesperrter Benutzer
Wieso fängt man mit Android an, wenn man nicht die einfachsten Konzepte der Sprache beherrscht?

Das bringt nur frust.

==> Fange klein an.
 

dzim

Top Contributor
Was der Luebbi sagt stimmt völlig, das Zauberwort ist hier aber auch: Reflection.
Mit der Zeile [c]android:eek: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
 

dzim

Top Contributor
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
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Android Zugriff auf view von MainActivity Android & Cross-Platform Mobile Apps 7
W Zur Laufzeit erstelltes MenuItem an eine View binden Android & Cross-Platform Mobile Apps 1
W Bild aus dem Internet in View bzw. ImageView laden (Fragment) Android & Cross-Platform Mobile Apps 2
J View Breite/Höhe bestimmen Android & Cross-Platform Mobile Apps 4
B Android In einem View der ersten Activity zweite anzeigen Android & Cross-Platform Mobile Apps 2
S Dynamische EditText View eingaben in Datenbank speichern Android & Cross-Platform Mobile Apps 0
V PopUp in gleicher View anzeigen Android & Cross-Platform Mobile Apps 1
M Android Suche Activity/View Namen Android & Cross-Platform Mobile Apps 1
J Android neue View mit OnTouchListener Android & Cross-Platform Mobile Apps 0
B Eigene View xml-Layout einbinden Android & Cross-Platform Mobile Apps 1
R Problem mit View in ScrollView Android & Cross-Platform Mobile Apps 6
R Android Android.view Serializable ? Android & Cross-Platform Mobile Apps 3
M Android View zu View hinzufügen Android & Cross-Platform Mobile Apps 4
M Activity wechseln aus List View mit Android & Cross-Platform Mobile Apps 2
M Suche Name von View Komponente Android & Cross-Platform Mobile Apps 10
G canvas in view anzeigen Android & Cross-Platform Mobile Apps 10
G Fehlermeldung: "No XML content. Please add a root view or layout to your documet." Android & Cross-Platform Mobile Apps 7
E Android View zur Laufzeit hinzufügen Android & Cross-Platform Mobile Apps 4
N neuen view öffnen Android & Cross-Platform Mobile Apps 13
J id's von view komponenten werden nicht gefunden Android & Cross-Platform Mobile Apps 2
C Panel/View für Android Android & Cross-Platform Mobile Apps 3
tfa Android Layout-Probleme: View programmatisch erweitern (addContentView) Android & Cross-Platform Mobile Apps 7
G Dynamische View Inhalt -> Lagesensor Android & Cross-Platform Mobile Apps 3

Ähnliche Java Themen

Neue Themen


Oben