2016-08-07 111 views
0

Ich bin ein Anfänger in Android Development. Das Schlüsselwort this macht mich immer verwirrt, wenn es in einem Konstruktor verwendet wird. Kann mir bitte jemand erklären, was es bedeutet?"this" Schlüsselwort Bedeutung in Android

RelativeLayout ob = new RelativeLayout(this); 
Button btn = new Button(this); 

Was bedeutet this in den bisherigen Konstrukteuren bedeuten? Worauf bezieht es sich?

+2

** this ** bezieht sich auf die aktuelle Klasse, in der Sie sich befinden. Der Ansichtskonstruktor erfordert, dass Sie einen Kontext angeben und der einzige nächste Kontext, den Sie haben, ist ** this **, was die aktuelle Klasse ist. – Enzokie

Antwort

0

Wie in der Dokumentation here gezeigt, nimmt der Konstruktor eine Instanz von Context. Ich gehe davon aus, dass Sie diesen Code in einer Aktivität aufrufen, wahrscheinlich in der onStart Methode. Wenn dies der Fall ist, bezieht sich das Schlüsselwort this auf die aktuelle Instanz der Aktivität. In android erweitern Activities die Klasse ContextWrapper, wodurch sie zu einer Unterklasse der Context-Klasse und damit zu dem Konstruktor RelativeLayout und Button passierbar werden. Das Schlüsselwort this bezieht sich auf die aktuelle Instanz der Klasse, die die Methode enthält, die den Konstruktor enthält, den Sie aufrufen.

0

this bezieht sich auf die Instanz der Klasse, dass dieser Code ist in etwa so ist:

public class Foo { 
    private string bar = "bar"; 

    public Foo(string bar) 
    { 
     this.bar // <-- refers to global bar. Not the bar from constructor. 
    } 
} 

In Ihrem Fall this zu den Parameter von der Art erfordert, dass RelativeLayout erfordert, also wahrscheinlich Ihre Klasse sein muss erweitert um etwas, das erfordert.