1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

view-Operator

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von xnocomplyx, 30.09.2010.

  1. xnocomplyx, 30.09.2010 #1
    xnocomplyx

    xnocomplyx Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    30.09.2010
    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: 30.09.2010
  2. MetBo, 30.09.2010 #2
    MetBo

    MetBo Fortgeschrittenes Mitglied

    Beiträge:
    264
    Erhaltene Danke:
    4
    Registriert seit:
    14.05.2010
    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 ;)
     
  3. Fr4gg0r, 30.09.2010 #3
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    naja Konstruktor ist immer noch der Konstruktor^^
    Du erstellst ja keine Objekte von Activities..

    onCreate() ist das main() ;)
     
  4. MetBo, 30.09.2010 #4
    MetBo

    MetBo Fortgeschrittenes Mitglied

    Beiträge:
    264
    Erhaltene Danke:
    4
    Registriert seit:
    14.05.2010
    Trotzdem bezieht sich this auf das aktuelle Klassenobjekt
     
  5. DieGoldeneMitte, 01.10.2010 #5
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    <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>
     
  6. xnocomplyx, 01.10.2010 #6
    xnocomplyx

    xnocomplyx Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    30.09.2010
    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?
     
  7. DieGoldeneMitte, 01.10.2010 #7
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    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.
     
  8. BenOtto, 02.10.2010 #8
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    15
    Registriert seit:
    30.08.2010
    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.
     

Diese Seite empfehlen