FindViewById devuelve nulo para el diseño de preferencias
Tengo una pantalla de preferencias (responder_generic.xml) de la siguiente manera:
<?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>
Que estoy instanciando de la siguiente manera: (en la versión 2.3.3)
- Lista de preferencias sólo muestra el primer elemento
- Cómo probar PreferenceFragment con Robolectric
- ¿Hay alguna manera de hacer que SharedPreferences sea global en toda mi aplicación para Android?
- cambiar la etiqueta de la categoría de preferencia color de fondo
- Preferencias de Android en evento onclick
addPreferencesFromResource(R.xml.responder_generic);
Y mi layout = preference_header_switch_item_responder
ve como sigue:
<?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>
Ahora, tengo el botón compuesto definido en la carpeta de layout/v-14
y el layout/v-14
respectivamente de la siguiente manera:
<?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>
y
<?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>
En el método onPostCreate
, estoy tratando de encontrar el checkbox / switch en tiempo de ejecución utilizando findViewById(R.id.switchWidget)
pero siempre devuelve null.
¿Alguna idea de cuál podría ser la razón?
- EditTextPreference hace que Inflate Exception
- PreferenceActivity da una excepción NullPointerException cuando se selecciona de ListPreference
- Problema con la captura de evento de clic de elemento de preferencia
- Obtener la vista de preferencias personalizadas
- No se puede obtener el botón de configuración para mostrar el fondo de pantalla en vivo
- PreferenceFragment se muestra de forma transparente
- Restablecer valores predeterminados de Preferencia
- Guardar el valor del elemento seleccionado mediante la preferencia compartida
La razón era que estaba agregando múltiples preferencias a la pantalla, por lo tanto, tuve que recurrir a la adición de una preferencia personalizada. Se ha proporcionado una solución detallada en el siguiente enlace:
La solución se ha proporcionado en el siguiente enlace.
Uso de findviewbyid en preferenciaactividad
- Adb shell screencap – "permiso denegado"
- Detectar la última fila de Listview en el desplazamiento – Android