FindViewById returns null in LinearLayout inside view <include> d

I can not understand the error here. Maybe I have something about something ...

XML format:

<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 header included:

 <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 of actions 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 if(headerLayout != null) check, I get a null pointer exception on headerLayout.addView(btn) .
I can get a TextView in the setTitle function, but some of them cannot get a LinearLayout

Can someone help me figure out what is wrong with the code ...

+8
android nullpointerexception include android-linearlayout
source share
2 answers

If you set the id attribute for the include element, this will be the identifier for the root of the bloated layout. So, instead of searching for LinearLayout with id headerLayout find id headerInclude (or do not set the identifier for the include element).

+28
source share

try the following:

 View v = getlayoutInflater().inflate(((LinearLayout)findViewById(R.id.headerInclude)), null); TextView tvTitle = (TextView) v.findViewById(R.id.tvScreenTitle); 
0
source share

All Articles