2016-04-13 10 views
-2

Von dem, was ich verstehe, konvertiert der LayoutInflater XML in Ansichten. Aber wenn ich Buttons, TextViews oder andere Widgets im Code verwende, muss ich einfach findViewById() verwenden, ohne diese Views zuerst aufblasen zu müssen. Sind diese Ansichten automatisch aufgebläht? Wenn ja, wann werden die Ansichten automatisch aufgebläht und wann müssen Sie sie manuell aufblasen?Werden Ansichten automatisch aufgeblasen?

+0

Ihre grundlegende Frage ist: "Wann muss ich eine Ansicht manuell aufblasen, und wann ist es automatisch für mich erledigt?" Ankesh Kumar Jaisansaria gab eine gute Antwort. Schau auch hier: [Unterschied zwischen setcontentview und inflater] (http://stackoverflow.com/questions/17808177/difference-between-setcontentview-and-inflater). Lesen Sie diesen Thread schließlich: [Fragmente gegen Aktivitäten und Ansichten] (http://stackoverflow.com/questions/10478233/android-i-need-some-clarifications-of-fragments-vs-activities-and-views) – paulsm4

+0

Inflate bedeutet einfach, von XML in tatsächliche View-Objekte zu übersetzen. findViewById sucht nur das aktuelle View-Objekt, um es zu manipulieren. –

Antwort

2

Sie müssen nur eine XML-Layout aufzublasen, und dann werden alle viewgroups und Ansichten (Schaltflächen, Textview, EditText usw.) Wird automatisch angezeigt.

In einer Activity-Klasse hat die oncreate-Methode eine Zeile SetContentview(), die das XML-Layout aufbläht.

1

Sie blähen Ihre Ansichten manuell auf, wenn Sie Ihre Aktivität und XML manuell erstellen.

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

Ein Activity muss einen Anruf an setContentView(R.layout.<your_layout_here>) in seiner onCreate Methode enthalten. Dadurch wird das XML im angegebenen Layout in die Ansichtshierarchie für Activity aufgebläht. Für eine Fragment, überschreiben die onCreateView Methode wie unten:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.<your_layout_here>, container, false); 
} 

Sobald Sie ein Layout (und alle seine Kinder View s) aufgeblasen haben in der Ansichtshierarchie, können Sie dann findViewById(R.id.<your_view_id>) einen Verweis auf die bekommen tatsächliche View Objekt, das Sie in die Hierarchie aufgeblasen haben und damit spielen.

1

Wenige Dinge sind hier:

1.Ansicht für Ihre Aktivität (UI-Bildschirm), dass wird von setContentView() Methode.

2.Ansicht für eine bestimmte UI-Komponente z.B. Schaltfläche, die entweder in xml Ihrer activity_layout erstellt wird, oder Sie können separate XML-Layoutdatei für Ihre spezifische UI-Komponente aufblasen. Das beste Beispiel und Verwendung ist wie das Aufblasen einer XML-Layoutdatei für Ihren benutzerdefinierten Toast.

So, hier ist die Sache, die setContentView() und Aufblasen eines XML-Layout-Datei für eine separate Ansicht bezieht: Beide dieser ein Layout für Komponenten Ansicht und Ansicht, beide erzeugt eine binäre Ausgabe für Layout und verwenden Sie sie wie oben beschrieben.

Verwandte Themen