2012-07-25 91 views
0

我試圖在另一個LinearLayout中插入LinearLayout。我不知道我在做什麼是對的。 我需要嘗試這種方式,而不使用通貨膨脹在另一個linearLayout中插入linearLayout

 LinearLayout address2; 
     address2 = new LinearLayout(this); 
     address2 = (LinearLayout)findViewById(R.id.sfsp2_layout); 

     LinearLayout teste3 = (LinearLayout)findViewById(R.id.se_contentAdressPostal); 

     LinearLayout teste4 = (LinearLayout)teste3.findViewWithTag("teste"); 
     teste4.addView(address2); 

的LinearLayout teste3

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/se_contentAdressPostal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="2dp" 
    android:background="@drawable/background_tile_address_postal" 
    android:orientation="vertical" > 

    <include 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     layout="@layout/socio_form_structured_postal" /> 

的LinearLayout teste4

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/sfsp_layout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/background_tile" 
    android:orientation="vertical" 
    android:tag="teste" > 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/sfsp_layout_horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="49dp" 
     android:layout_gravity="right" 
     android:background="@drawable/background_tile" 
     android:orientation="horizontal" 
     android:tag="teste" > 
     <Button 
      android:id="@+id/sfsp_btStructuredPostal" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right" 
      android:layout_marginBottom="2dp" 
      android:layout_marginLeft="5dp" 
      android:layout_marginRight="5dp" 
      android:layout_marginTop="2dp" 
      android:hint="@string/sfsp_btStructuredPostal" /> ....... 

LinearLayour地址2(我需要在layout4要插入的佈局)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/sfsp2_layout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/background_tile" 
    android:orientation="vertical" > 

    <EditText 
     android:id="@+id/sfsp2_etStructuredPostalApartado" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="2dp" 
     android:layout_marginLeft="65dp" 
     android:layout_marginRight="55dp" 
     android:layout_marginTop="2dp" 
     android:layout_weight="0.14" 
     android:ems="10" 
     android:hint="@string/sfsp2_etStructuredPostalApartado" 
     android:inputType="textMultiLine" 
     android:scrollHorizontally="false" > 

LinearLayout 「teste4」 是內部 「teste3」。我需要在「teste4」中插入LinearLayout「address2」。你能告訴我我做錯了什麼嗎?

+0

佈局xml文件中的 ikh 2012-07-25 15:10:02

+0

此外,所有這些佈局在同一個文件中? – ikh 2012-07-25 15:10:41

+0

嗨ikh。感謝您的回覆。佈局都來自不同的文件:) – 2012-07-25 15:15:07

回答

2

我想這裏有一些關於findViewById如何工作的誤解。我會在下面解釋它。希望這有助於,讓我知道如果沒有。

有兩種可能的findViewById()可以使用。

  1. Activity.findViewById():這可以用來查找當前活動的主要內容視圖的視圖 - 即,用setContentView()設置視圖。它不能用於任何其他目的。例如,它無法從任何其他佈局文件中找到視圖 - 該功能根本無法知道如何找到它。據我所知,這是你正在嘗試使用的功能。如果您擁有的最後一個XML文件不是主佈局,那麼行address2 = (LinearLayout)findViewById(R.id.sfsp2_layout)將會失敗。

  2. View.findViewById():此功能可用於查找包含在某個其他視圖中的視圖。例如。如果您的view1包含view2,並且view2的ID爲some_id,則可以通過致電view1.findViewById(R.id.some_id)找到view2。爲了這個工作,view1必須完全初始化。例如。如果view1的描述採用XML格式,則必須先將其充分填充。

實質上,如果要使用在單獨的XML文件中描述的視圖,則必須首先對其進行膨脹。我認爲沒有辦法解決這個問題。