2016-09-18 8 views
0

Hallo, ich habe nur zu lernen, begann mit der Entwicklung Android-Anwendung und ich bin eine Menge Tutorials, aber keiner von ihnen wirklich beschreiben Schritt für Schritt so meine Frage zu beobachten ist:Java - Android - view.getContext(), was bedeutet

ich habe eine einfache Anwendung erstellt, die auf TextView ein EditText enthält und ein Button

i android:onClick="onButtonClick" meine Button so löst es die onButtonClick Methode, jetzt hinzugefügt haben, mag ich es aus dem userinput von EditText zu drucken, so etwas ich tat, ist :

public void onButtonClick(View v){ 
     Toast.makeText(v.getContext(), email.getText().toString(), Toast.LENGTH_SHORT).show(); 
    } 

aber warum muss die Methode die View v enthalten? Woher kommt es? und was enthält es? Es enthält den Knopf, auf den ich geklickt habe? und was macht die v.getContext()? Warum macht meine App dasselbe, wenn Sie die v.getContext() durch this ersetzen?

Antwort

0

Wenn Sie auf eine Schaltfläche klicken, wird View übergeben. ViewGroup ist eine Gruppe von View Beispiel LinearLayout, Relative Layout, FrameLayout, etc. View ist ein Teil von ViewGroup. Gemäß Official Documentation nimmt A View einen rechteckigen Bereich auf dem Bildschirm ein und ist für das Zeichnen und die Ereignisbehandlung zuständig. View ist die Basisklasse für Widgets, mit denen interaktive UI-Komponenten (Schaltflächen, Textfelder usw.) erstellt werden. Die ViewGroup-Unterklasse ist die Basisklasse für Layouts. Hierbei handelt es sich um unsichtbare Container, die andere Ansichten (oder andere ViewGroups) enthalten und deren Layouteigenschaften definieren. Ich hoffe, Sie verstehen gut, was View und ViewGroup ist !!

0

Das sind viele Fragen auf einmal, aber ich versuche, sie nacheinander zu beantworten.

aber warum muss die Methode die View v enthalten? Woher kommt es? und was enthält es?

Betrachten Sie die documentation of View.OnClickListener:

Ausblick: Die Ansicht, dass geklickt wurde.

Sie sind also in Ihrer Annahme richtig, dass es die Ansicht ist, die angeklickt wurde.

und was macht die v.getContext()?

Der erste Parameter der Toast#makeText-Methode ist ein Context. Grundsätzlich ist die Context ein Container mit globalen Informationen in einer Android-Anwendung. Die Toast benötigt es, um Informationen zu erhalten, um sich zu zeigen.

Warum macht meine App das gleiche, wenn sie die v.getContext() damit ersetzt?

Ich nehme an, Ihre Methode befindet sich in einem Activity. Eine Activity ist eine Unterklasse von Context und kann als Parameter verwendet werden.