Почему LayoutInflater не работает в моем случае? - PullRequest
0 голосов
/ 12 июля 2011

Мой main.xml макет просто содержит кнопку и LinearLayout content_area , что показано ниже:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">


    <LinearLayout 
        android:id="@+id/myBtns"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
    >
        <Button
            android:id="@+id/btn_one"
            android:layout_width="100dip"
            android:layout_height="30dip"
                android:text="button one"
         />

    </LinearLayout>

    <LinearLayout 
        android:id="@+id/content_area"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    >
         <!--inflate layout here-->

    </LinearLayout>


   </LinearLayout>

У меня есть другой макет ( content_one.xml ), который будет использоваться для встраивания (раздувания) в content_area (значение id) макета main.xml :

content_one.xml :

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">

        <TextView.../>
         ... 
        <Button .../>

    </LinearLayout>

Я пытался использовать LayoutInflater для встраивания content_one.xml в content_area из main.xml :

public class MyActivity extends Activity{

      private LinearLayout contentArea;

      @Override
      public void onCreate(Bundle savedInstanceState) {

              super.onCreate(savedInstanceState);
              setContentView(R.layout.main);

              contentArea= (LinearLayout) findViewById(R.id.content_area);

              LayoutInflater inflater = (LayoutInflater)MyActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              View inflatedView = (View) inflater.inflate(R.layout.content_one, null);

              contentArea.addView(inflatedView);
}

Но это не работает, content_one.xml не отображается в content_area из main.xml .Я получил следующее сообщение об ошибке от LogCat в Eclipse

(. Щелкните правой кнопкой мыши на следующем изображении и просмотрите изображение )

enter image description here

, почему мой LayoutInflater не работает?Где я не прав?

1 Ответ

2 голосов
/ 12 июля 2011

View надувается правильно, но у вас есть fill_parent высота на макете myBtns, поэтому другой LinearLayout не виден.Если вы измените его на wrap_content, вы увидите другой LinearLayout.

...