I cannot figure out mistake here. I may be oevrlooking some thing...
Layout 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>
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>
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);
}
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
Can any one help me in figuring out what is wrong with the code...
try this:
If you set the
id
attribute for theinclude
element, then that will be the id for the root of the inflated layout. So, instead of looking for aLinearLayout
with the idheaderLayout
look for the idheaderInclude
(or don't set an id for theinclude
element).