2017-08-18 2 views
0
public class MainActivity extends AppCompatActivity { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 
} 

Dies ist eine Anfängerfrage, aber ich kann es nicht verstehen, auch ich suchte und konnte nicht die gleiche Frage finden.Verständnis der Methode in Aktivität

Hier ist, was ich verstehe:

Klasse MainActivity erweitert AppCompatActivity so kann sie die Felder und Methoden der Elternklasse verwenden.

Die protected void onCreate(Bundle savedInstanceState) { ist eine Methode, in der Elternklasse und seine immer overridden.Then die super Schlüsselwort verwendet wird, um die onCreate(..) Methode aufzurufen.

Nun, was ich nicht verstehe, ist die setContentView(..) Methode. Ich dachte, dass wir in Java eine obj.method oder super.method oder ClassName.method (wenn statisch) verwenden sollten, um eine Methode aufzurufen. Aber hier wird die Methode alleine verwendet. Ich brauche nur eine kleine Erklärung oder eine Weiterleitung an den richtigen Ort.

Vielen Dank.

+0

die setContentView ist auch ein Verfahren aus AppCompatActivity oder einem seiner Eltern –

Antwort

2

SetContentView ist eine Methode, die wir erben, wenn wir eine Aktivitätsklasse erweitern, die Aktivitätsinhalt aus einer Layout-Ressource festlegen. Die Ressource wird aufgebläht und fügt der Aktivität alle Ansichten der obersten Ebene hinzu. Die Aktivität verwendet setContentView (R.layout.main), um das XML-Layout für diese Aktivität festzulegen, die als Benutzeroberfläche Ihrer Aktivität angezeigt wird.

+0

Ja, ich verstehe das, aber wie können wir es nennen, ohne das 'super' Schlüsselwort? – kotlinhelp

+6

weil Sie Methode der Elternklasse ohne Super refrence nennen kann –

+1

die Super ist obligatorisch, wenn Sie die Methode aus dem Elternteil, in Ihrem Fall anrufen möchten, da Sie die onCreate außer Kraft setzen Sie super.onCreate, um die Eltern anrufen müssen anrufen Methode, da Sie die setContentView nicht überschrieben haben, brauchen Sie nicht das Schlüsselwort –

0

Dies ist von Android Developer

onCreate (Bundle), wo Sie Ihre Aktivität initialisieren. Am wichtigsten ist, dass Sie in der Regel setContentView (int) mit einer Layout-Ressource aufrufen, die Ihre Benutzeroberfläche definiert, und findViewById (int) verwendet, um die Widgets in dieser Benutzeroberfläche abzurufen, mit denen Sie programmgesteuert interagieren müssen.

Dies ist die Hauptansicht Ihrer Tätigkeit Blick auf den Link zu setzen viele Erklärung darin gibt es.

+0

Ursprüngliche Frage ist mehr über Java-Syntax und Umfang. Du antwortest es nicht. –

1

In diesem Fall nimmt Java implizit eine Referenz auf das aktuelle Objekt an.

setContentView(...) 

ist die gleiche wie

this.setContentView(...) 

einen Blick auf this answer auf ähnliche Frage Nehmen

0

Für eine einfache mich Ihnen ein Beispiel

public class BaseActivity extends AppCompatActivity{ 

//Two methods in super class 
    public void showProgress() { 
     //your code 
    } 

    public void hideProgress() { 

    //your code 
    } 

} 

verstehen lassen geben Dieses BaseActivity das ist Superklasse für andere Aktivitäten

public class MainActivity extends BaseActivity { 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //Direct access to BaseClass Method 
     showProgress(); 
    } 

} 

Wie Sie sehen können Sie direkt Methode Baseclass kann

zugreifen, wenn noch irgendeine Verwirrung mich wissen lassen ...

0

Bitte das obige Beispiel überprüfen; methodX ist ein Replikat der setContentView()-Methode in Ihrem Code. Sie sind beide Methoden der Unterklassen.Damit nicht nötig mit Schlüsselwort super erklärt

public class Base { 

    public void method_pub(){ 
     System.out.println("Method is public"); 

    } 
    protected void method_pro(){`enter code here 
     System.out.println("Method is protected"); 
    } 
} 

public class Que1 extends Base { 

    public void methodX(){} 

    @Override 
    protected void method_pro() { 

     super.method_pro(); 
     methodX(); 
    } 
} 
Verwandte Themen