uso de findviewbyid en la actividad preferente
Tengo una pantalla de preferencias y estoy especificando un recurso de diseño usando elandroid:layout
atributo. En la actividad de preferencias estoy usando / inflando la preferencia usandoaddPreferencesFromResource
desdeonCreate
método. Dentro del diseño tengo pocas vistas de texto y botones.
El problema es que no puedo encontrar ninguna de las vistas de texto, casillas de verificación y botones usandofindViewById
método! Cada resultado parafindViewById
devuelve nulo.
EDITAR:
Necesito adjuntar un oyente a la casilla de verificación.
¿Alguien por favor me puede ayudar aquí?
Editar 2:
1) preferences_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) pantalla de preferencias
<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) Actividad de preferencia en Crear:
EDITAR 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();
// setContentView(getListView());
headerCompound = findViewById(R.id.switchWidget);
headerCompoundEmail = findViewById(R.id.switchWidgetEmail);
}
y
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));
}
Probé el código de arribaonPostCreate
también, pero aún así el valor devuelto es nulo.
Quiero encontrar casillas de verificación para responder_generic.xml y email_preferences.xml. ¿Hay una manera de encontrar y agregar oyentes a ellos?
Gracias adithya