I have a preferences screen and I am specifying a layout resource using the android:layout attribute. In preference activity, I use / inflate preference using the addPreferencesFromResource method from onCreate . Inside the layout, I have few text views and buttons.
The problem is that I cannot find text fields, checkboxes, and buttons using the findViewById method! Each result for findViewById returns null.
EDIT
I need to bind a listener to a flag.
Can anyone help me here?
EDIT 2 :
1) preference_layout.xml
<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_layout" style="?android:attr/listSeparatorTextViewStyle" > <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" /> </LinearLayout>
2) preference screen
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <Preference android:defaultValue="false" android:key="auto_responder_key" android:widgetLayout="@layout/preference_layout" android:title="@string/auto_responder"> </Preference> </PreferenceScreen>
3) OnCreate prefix operation:
EDIT 3:
@Override protected void onCreate(Bundle savedInstanceState) { if(savedInstanceState != null && savedInstanceState.containsKey(HEADERS_KEY)) { headers = savedInstanceState.getParcelableArrayList(HEADERS_KEY); } super.onCreate(savedInstanceState); applicationContext = getApplicationContext(); setupSimplePreferencesScreen();
and
private void setupSimplePreferencesScreen() { if (!isSimplePreferences(this)) { return; } addPreferencesFromResource(R.xml.responder_generic); PreferenceCategory fakeHeader = new PreferenceCategory(this); fakeHeader.setLayoutResource(R.layout.place_holder_auto_reply_header); getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.auto_reply_sms_call_check_box_preference); addPreferencesFromResource(R.xml.auto_reply_preferences); Preference smsTemplatePreference = findPreference(SMS_TEMPLATE_KEY); if(smsTemplatePreference != null) { bindPreferenceSummaryToValue(smsTemplatePreference); } Preference customTemplatePreference = findPreference(SMS_CUSTOM_TEMPLATE_KEY); if(customTemplatePreference != null) { customTemplatePreference.setEnabled(false); bindPreferenceSummaryToValue(customTemplatePreference); getPreferenceScreen().removePreference(customTemplatePreference); } // Add 'email' preferences, and a corresponding header. // Add 'email header' preferences. addPreferencesFromResource(R.xml.email_enable_check); addPreferencesFromResource(R.xml.email_preferences); Preference passwordPreference = findPreference(EMAIL_PWD_KEY); if(passwordPreference != null) { bindPreferenceSummaryToValue(passwordPreference); // the advanced version of SMS template } Preference customPasswordPreference = findPreference(EMAIL_CUSTOM_PWD_KEY); if(customPasswordPreference != null) { bindPreferenceSummaryToValue(customPasswordPreference); getPreferenceScreen().removePreference(customPasswordPreference); } // Add 'network' preferences, and a corresponding header. fakeHeader = new PreferenceCategory(this); fakeHeader.setLayoutResource(R.layout.place_holder_network_header); getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.network_preferences_check_box); // Add 'misc' preferences, and a corresponding header. fakeHeader = new PreferenceCategory(this); fakeHeader.setLayoutResource(R.layout.place_holder_misc_header); getPreferenceScreen().addPreference(fakeHeader); addPreferencesFromResource(R.xml.misc_preferences); addPreferencesFromResource(R.xml.misc_reject_ignore_check_box_preferences); // Bind the summaries of EditText/Switch/CheckBox preferences to // their values. When their values change, their summaries are updated // to reflect the new value, per the Android Design guidelines. bindPreferenceSummaryToValue(findPreference(AUTO_REPLY_SMS_KEY)); bindPreferenceSummaryToValue(findPreference(AUTO_REPLY_CALL_KEY)); bindPreferenceSummaryToValue(findPreference(DATA_NETWORK_KEY)); bindPreferenceSummaryToValue(findPreference(WIFI_KEY)); bindPreferenceSummaryToValue(findPreference(PASSCODE_KEY)); bindPreferenceSummaryToValue(findPreference(EMAIL_USR_KEY)); bindPreferenceSummaryToValue(findPreference(EMAIL_INT_KEY)); bindPreferenceSummaryToValue(findPreference(AUTO_RESPONDER_KEY)); }
I tried the above code in onPostCreate , but still the return value is null.
I want to find checkboxes for responder_generic.xml and email_preferences.xml. Is there any way to find and add listeners to them?
Thanks Adithya
android android-preferences preferenceactivity
Adithya Mar 31 '13 at 9:39 2013-03-31 09:39
source share