findViewById在里面的LinearLayout返回null的&LT;包括&GT;三维视图 [英] findViewById returns null on a LinearLayout inside an <include>d view
问题描述
我想不出错在这里。我可能会oevrlooking一些事情...
I cannot figure out mistake here. I may be oevrlooking some thing...
布局XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:orientation="vertical" >
<include
android:id="@+id/headerInclude"
android:layout_width="fill_parent"
android:layout_height="38dp"
android:layout_gravity="top"
layout="@layout/header" />
<LinearLayout
android:id="@+id/actualView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:layout_weight="1" >
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="@drawable/dotted_line"
android:dividerHeight="2dp"
android:drawSelectorOnTop="false"
android:paddingBottom="10dp"
android:paddingTop="10dp" />
</LinearLayout>
<include
android:layout_width="fill_parent"
android:layout_height="35dp"
android:layout_gravity="bottom"
layout="@layout/footer" />
</LinearLayout>
包括头XML:
Included header XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/headerLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/header_bgr"
android:orientation="horizontal"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="7dp" >
<TextView
android:id="@+id/tvScreenTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.8"
android:ellipsize="end"
android:gravity="center|left"
android:singleLine="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffff"
android:textSize="17sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvScreenSubTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.2"
android:gravity="center|right"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffff"
android:textSize="15sp"
android:textStyle="bold" />
</LinearLayout>
清单活动的Java code:
List Activity java code:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
appData = ((DxApp) this.getApplicationContext()).getData();
setContentView(R.layout.list);
setTitle("Some Title...");
// some more code...
addButtons();
}
protected void addButtons() {
LinearLayout headerLayout = (LinearLayout) findViewById(R.id.headerLayout);
Button btn = new Button(this);
btn.setText("Go to My Sets");
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// do some thing here...
}
});
if (headerLayout != null)
headerLayout.addView(btn);
}
@Override
public void setTitle(CharSequence title) {
TextView tvTitle = (TextView) findViewById(R.id.tvScreenTitle);
tvTitle.setText(title);
}
如果我删除检查如果(headerLayout!= NULL)
,我得到空
指针异常的 headerLayout.addView(BTN)
。
我能够获得的TextView
函数的setTitle
,但一些如何不能让的LinearLayout
If I remove the check if(headerLayout != null)
, I get null
pointer exception onheaderLayout.addView(btn)
.
I am able to get TextView
in function setTitle
but some how cannot get LinearLayout
任何一个可以帮我搞清楚什么是错的code ...
Can any one help me in figuring out what is wrong with the code...
推荐答案
如果您设置了 ID
属性的包括
元素,那么这将是ID为充气布局的根。因此,而不是找一个的LinearLayout
id为 headerLayout
查找ID headerInclude
(或不设置一个id为包括
元素)。
If you set the id
attribute for the include
element, then that will be the id for the root of the inflated layout. So, instead of looking for a LinearLayout
with the id headerLayout
look for the id headerInclude
(or don't set an id for the include
element).
这篇关于findViewById在里面的LinearLayout返回null的&LT;包括&GT;三维视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!