findViewById returns null for preference layout
android, android-preferences
Solution
Reason was i was adding multiple preferences to the screen, hence, i had to resort to adding a custom preference. Detailed solution has been provided in the following link:
The solution has been provided in the following link.
usage of findviewbyid in preferenceactivity
Problem
I have a preference screen (responder_generic.xml) as follows: ``` <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <Preference android:defaultValue="false" android:key="auto_responder_key" android:layout="@layout/preference_header_switch_item_responder" android:title="@string/auto_responder"> </Preference> </PreferenceScreen> ``` which i am instantiating as follows : (in version 2.3.3) ``` addPreferencesFromResource(R.xml.responder_generic); ``` and my layout = `preference_header_switch_item_responder` looks as follows: ``` <?xml version="1.0" encoding="utf-8"?> <!-- Layout of a header item in PreferenceActivity. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="33dp" android:gravity="center_vertical" android:minHeight="33dp" android:id="@+id/preference_header_switch_item_responder" style="?android:attr/listSeparatorTextViewStyle" > <RelativeLayout android:layout_width="0dip" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_weight="1" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="marquee" android:fadingEdge="horizontal" android:singleLine="true" android:text="@string/auto_responder" android:textAppearance="?android:attr/textAppearanceSmall" android:textStyle="bold" /> <TextView android:id="@+id/summary" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@android:id/title" android:ellipsize="end" android:textAppearance="?android:attr/textAppearanceSmall" /> </RelativeLayout> <include layout="@layout/compound_button" /> </LinearLayout> ``` Now, i have the compound button defined in `layout` folder and `layout/v-14` respectively as follows : ``` <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <CheckBox android:id="@+id/switchWidget" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:clickable="true" android:focusable="false" android:padding="8dip" android:layout_marginRight="14dip" /> </merge> ``` and ``` <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <Switch android:id="@+id/switchWidget" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:clickable="true" android:focusable="false" android:padding="8dip" android:layout_marginRight="14dip"/> </merge> ``` In the `onPostCreate` method, i am trying to find the this checkbox/switch at run time using `findViewById(R.id.switchWidget)` but its always returning null. Any idea what could be the reason ?