Android LayoutFlater是否可以使用包含的布局xml文件?

Android LayoutFlater是否可以使用包含的布局xml文件?,android,android-layout,Android,Android Layout,问题是:我有一个使用include标记的布局。布局简单-> <LinearLayout> <TextView ...> <LinearLayout> <include ...> </LinearLayout> </LinearLayout> 现在包含的文件只不过是: <LinearLayout> <TextView ... android:id="@+id/inner_te

问题是:我有一个使用include标记的布局。布局简单->

<LinearLayout>
  <TextView ...>

  <LinearLayout>
     <include ...>
  </LinearLayout>
</LinearLayout>

现在包含的文件只不过是:

<LinearLayout>
  <TextView ... android:id="@+id/inner_text">
</LinearLayout>

现在,如果我尝试在create或onStart调用中访问TextView内部_文本,它会抛出一个NPE。我曾尝试使用LayoutInflater导入包含的xml文件,然后访问内部文本,但没有效果-它总是失败

所以,问题是:LayoutFlater是否可以处理父xml文件中包含的xml文件?我想做的是获取包含的xml文件的内容——并根据偏好设置整个内容为可见或不可见

似乎没有任何东西允许我抓取TextView对象

现在,当我将xml作为嵌套元素包含在父文件中(不使用include标记)时,它可以很好地访问LinearLayout,但这与我尝试使视图布局动态化的目的背道而驰,也就是说,我可以随意更改包含子布局的内容,而不必对父布局进行任何更改


任何帮助、指针、建议->非常感谢。

作为建议,我认为您可以在主xml中保留一些布局组件为空,它们在运行时,膨胀主xml,然后膨胀包含的xml,并将包含的内容添加到主xml中留下的空间中


但我认为你的例子必须起作用,在内部,Android使用充气机来膨胀资源。你能编辑并讲多一点吗?代码示例可能会有所帮助。

好吧,非常奇怪,当您从任何xml资源(如果xml资源有或没有包含嵌套资源)膨胀视图时,视图必须包含所有解析的xml。因此,是的,LayoutFlater可以处理父xml文件中包含的xml文件

我复制了我现在的方式

我的通用布局(带有文本、进度条和图像的标题)


仅此而已,我希望这能对您有所帮助。

Thanx需要帮助-我发现了我的问题所在-我正在尝试膨胀包含的文件-而不是父容器-因此它从未找到元素。我希望文档中会提到这一点——从逻辑上讲,我认为父xml文件会加载——但包含的文件可能需要膨胀——我猜不会

感谢您提交的代码示例,现在可以正常工作了

塔克斯

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="10dip">

    <ImageView
        android:id="@+id/genericHeaderLogoPin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:src="@drawable/logo_pin"/>

    <TextView
        android:id="@+id/genericHeaderTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@id/genericHeaderLogoPin"
        android:textSize="18dip"
        android:textStyle="bold"
        android:textColor="#FF0C9994"/>

    <ProgressBar
        android:id="@+id/genericHeaderProgressBar"
        android:layout_width="25dip"
        android:layout_height="25dip"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@id/genericHeaderLogoPin"
        style="@android:style/Widget.ProgressBar.Inverse"
        android:visibility="gone"/>

</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  android:background="@drawable/background_new_search_activity_1">

    <include layout="@layout/generic_header_layout" android:id="@+id/listaBusquedasHeader"/>

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:cacheColorHint="#00000000"/>

</LinearLayout>
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        LayoutInflater inflater = LayoutInflater.from(this);
        View view = inflater.inflate(R.layout.lista_busquedas_activity, null);

        setContentView(view);
        listView = (ListView) findViewById(android.R.id.list);
        listView.setOnItemClickListener(listItemClickListener);

        ((TextView)findViewById(R.id.genericHeaderTitle)).setText(R.string.messagesActivityTitle);
    }