view-Operator

X

xnocomplyx

Neues Mitglied
0
Hallo, ich habe eine Frage zum this-Operator (sorry für view-Operator im Titel). Ich verstehe seine Funktion als Übergabeparameter nicht:

Code:
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("Hello, Android");
        setContentView(tv);
Wieso muss dort das this als Parameter auftauchen, was hat er hier für eine spezielle Funktion? Habe ihn in Java nur verwendet um verdeckte Objektvariablen zu verwenden... aber hier?

Ich hoffe es kann mir Jemand helfen!
 
Zuletzt bearbeitet:
Ja, onCreate ist quasi der Konstruktor deiner Klasse!

Du schreibst dein Programm objektorientiert und mit this beziehst du dich auf das aktuelle Objekt (in diesem Fall deine App).

Hoffe du konntest es verstehen ;)
 
naja Konstruktor ist immer noch der Konstruktor^^
Du erstellst ja keine Objekte von Activities..

onCreate() ist das main() ;)
 
Trotzdem bezieht sich this auf das aktuelle Klassenobjekt
 
<oberlehrer>
this ist nicht das Klassenobjekt sondern die aktuelle Objektinstanz.
Klasse.this ist auch eine Objektinstanz, aber von einer umgebenden Klasse (hier nicht der Fall)
Das Klassenobjekt gibt es mit this.getClass() oder Klassenname.class.
</oberlehrer>
 
DieGoldeneMitte schrieb:
<oberlehrer>
this ist nicht das Klassenobjekt sondern die aktuelle Objektinstanz.
</oberlehrer>

MetBo schrieb:
mit this beziehst du dich auf das aktuelle Objekt (in diesem Fall deine App).

Hab eine Zeil weggelassen bei meinem Codebeispiel (die Oberste):

Code:
public class helloAndroid extends Activity {...}
Also bezieht sich das this auf helloAndroid, sodass ich mit this. alles innerhalb von helloAndroid ansprechen könnte?
 
Yupp, innerhalb von halloAndroid ist "this" das aktuelle "halloAndroid" Objekt.

Es sei denn, du benutzt geschachtelte Klassen. Da bedeutet dann innerhalb der geschachtelten Klasse "this" das aktuelle Objekt eben dieser geschachtelten Klasse. Wenn Du von dort aus das halloAndroid Objekt haben willst, musst du halloAndroid.this schreiben.

Achja, Klassennamen, die mit Kleinbuchstaben beginnen, sind schlecht fürs Karma :D.
 
Um mal die Frage zu beantworten:
Die TextView muss wissen in welchem Kontext sie entsteht. Und Activity leitet sich von Context ab. Deswegen kann man this übergeben. Im Context stehen eben alle relevanten Informationen, wie Zugriffsrechte, XML-Resourcen usw. drin.
 

Ähnliche Themen

P
Antworten
0
Aufrufe
553
Pascppal
P
Tiefkuehlpizza
Antworten
2
Aufrufe
951
Tiefkuehlpizza
Tiefkuehlpizza
F
  • Fabicoe
Antworten
1
Aufrufe
917
jogimuc
J
Zurück
Oben Unten