Obtener la vista de preferencias personalizadas

En mi aplicación tengo un PreferenceScreen que se parece a esto:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <CheckBoxPreference android:key="state" android:title="@string/stateTitle" android:summary="@string/stateSummary" android:defaultValue="false" /> <Preference android:key="test" android:layout="@layout/pref_control" android:dependency="state" /> </PreferenceScreen> 

Ahora mi pregunta es ¿cómo puedo obtener las vistas que están en mi pref_control.xml de la PreferenceActivity? He intentado con findViewById() normal findViewById() pero que termina en una NullPointerException. Aquí está mi código que causa la excepción:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); ((Button) findViewById(R.id.startTime)).setText("bla"); ((Button) findViewById(R.id.endTime)).setText("bla"); } 

Puedes obtener la Preferencia usando Preference p = findPrefences("test") de la Actividad (o mejor, el PreferenceFragment, si usas versiones más recientes de Android).

En ese objeto se puede llamar .getView(convertView, parent) . Para sus propósitos, debería estar bien llamar a ese método con null como paramters: findPreferences("test").getView(null, null) .

HTH

Dado que utiliza PreferenceActivity, puede utilizar:

 final CheckBoxPreference stateCheckBox = (CheckBoxPreference)findPreference("state"); 

Y presumiblemente:

 final Preference testPreference = (Preference)findPreference("test"); 

Está obsoleto, pero debería funcionar.

  • Picasso no conserva la proporción de aspecto al cambiar el tamaño de la imagen
  • Los márgenes de ConstraintLayout no funcionan
  • Tamaño de la barra de navegación de Android en xml
  • ¿Cómo puedo crear una barra de herramientas (como una barra de acción secundaria) en Android?
  • ListView elemento con list_selector_background como LayerList drawable
  • Error: no se encontró identificador de recurso para el atributo "showAsAction" en el paquete android
  • Uso de la barra de herramientas AppCompat con FrameLayout
  • Android: permiso denegado Error al cambiar la actividad del lanzador
  • Android por qué este botón no se puede hacer clic
  • Restaurar estado de vista antes de aplicar atributos XML
  • ¿La razón detrás del margen extra de 8dp en una vista? No formas de resolver
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.