2017-11-08 2 views
-2

findViewById() Does und inflate() ein View Objekt oder „Ansicht reference“ zurückkehren?, zu fragen, weil wirgibt ein Objekt oder eine refrence zum Objekt

LinearLayout linear=(LinearLayout)inflate(R.layout.main,null); 

Also, wenn aufblasen Rückkehr Ansicht Objekt zu tun, und Sicht ist Elternteil LinearLayout das Wie kann das Objekt der Ansicht lineareLayouts Mitglieder Variablen und Methoden enthalten.

+1

sieht aus wie Sie Java Grundlagen verpasst haben. –

Antwort

0
// use this in activity 
LinearLayout ll=(LinearLayout)findViewById(R.id.llout); 

// use this in fragment onViewCreated() 
LinearLayout ll=(LinearLayout)View.findViewById(R.id.llout); 

// used anywhere in actvity or fragment 
LinearLayout ll=(LinearLayout)getView.findViewById(R.id.llout); 
+0

geben sie ein "view obj" selbst oder eine "refrence of type view" auf ein Objekt zurück –

0

Ja, sie tun, weil Sie diese Ansicht in LinearLayout werfen Und Sie sollten layoutInflater bezwecken inflate

+0

geben sie ein "view obj" selbst oder ein "refrence of type view auf ein Objekt" zurück –

+0

"View object", einfach tun Strg + Rechtsklick um zu sehen, was genau diese Methode macht. –

+0

Alle diese Objekte zeigen das Objekt zurück. –

0

Does findViewById() aufrufen und aufblasen() geben einen Blick Objekt oder „-Ansicht Referenz" ?

Es wird ein Objekt View (oder Unterklasse) zurückgegeben.

Wenn die Rückgabesicht aufblasen Objekt, und die Ansicht ist übergeordnet von LinearLayout das Wie kann das Objekt view enthält lineareLayouts Mitglieder Variablen und Methoden.

Wenn Sie eine Ansicht aufblasen, all der Ansichten im Layout wird aufgeblasen werden, aber das zurückgegebene Objekt wird die Top-Level-Ansicht in Ihrem Layout sein. Viele Ansichten (alles, was von ViewGroup stammt) können "untergeordnete" Ansichten haben. Sie können auf die untergeordneten Elemente der zurückgegebenen Ansicht zugreifen, indem Sie findViewById() aufrufen oder indem Sie direkt auf sie mit getChildAt() zugreifen.

Lassen Sie uns sagen, wir haben dieses Layout:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/text1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Hello world"/> 

    <TextView 
     android:id="@+id/text2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Stack Overflow"/> 

</LinearLayout> 

Wir Code wie folgt schreiben:

LayoutInflater inflater = LayoutInflater.from(context); 
View view = inflater.inflate(R.layout.my_layout, null); 

In diesem Fall wird view die LinearLayout sein, die die Top-Level-Ansicht in unserem Layout ist . Wenn wir das Kind TextView s bekommen möchten, könnten wir folgendes schreiben:

TextView helloWorld = view.findViewById(R.id.text1); 
TextView stackOverflow = ((LinearLayout) view).getChildAt(1); // index is 0-based 
Verwandte Themen