2016-07-06 6 views
0

Warum wird das Kontextobjekt als Parameter im TextView-Konstruktor und im expliziten Intent-Konstruktor anders geschrieben? korrekte Initialisierung beinhaltet:Warum wird das Kontextobjekt als Parameter im TextView-Konstruktor und im expliziten Intent-Konstruktor anders geschrieben?

TextView textView = new TextView(this); 
Intent intent = new Intent(MainActivity.this, SecondActivity.class); 

Aber wenn ich versuche zu schreiben:

Intent intent = new Intent(this, SecondActivity.class); 

ein Fehler bemerkt angezeigt wurde. Ich verstehe nicht den Unterschied zwischen dieser und MainActivity.this. Jeder könnte erklären, was sie wirklich sind und wie man sie unterscheiden kann?

+0

Was ist der Fehler? – jbarat

Antwort

1

Ich weiß nicht, wie Ihr Code ist, aber ich denke, Sie verwenden this an der falschen Stelle! Im Allgemeinen this bezieht sich auf die class, die this Schlüsselwort ist derzeit innerhalb, Wenn Sie this in einer inneren Klasse tatsächlich verwenden Sie beziehen sich auf die innere Klasse nicht die äußere, zum Beispiel angenommen, dass wir diese Codezeilen in der onCreate Methode haben MainActivity:

 btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      TextView tv; 
      //Wrong way 
      tv = new TextView(this);//this refers to onClickListener (inner class) 
      //It's ok 
      tv = new TextView(MainActivity.this); 

      Intent i; 
      //Wrong way 
      i = new Intent(this, SecondActivity.class);//this refers to the onClickListener (inner class) 
      //It's ok 
      i = new Intent(MainActivity.this, MainActivity.class); 
     } 
    }); 

es selbsterklärend ist, immer vorsichtig sein, über , was Sie als this erwarten und wo Sie this

verwenden ist es eine gute Praxis, diezu erwähnenName vor this Stichwort-Stichwort: MainActivity.this

Verwandte Themen