2011-06-28 14 views
7

Estoy intentando implementar (correctamente) una pantalla de preferencias, pero el problema es que todos los métodos utilizados para leer preferencias de archivos xml están en desuso (o simplemente no los reconozco). El código de muestra oficial en el sitio dev (PreferenceActivity) usa métodos obsoletos. ¿Alguien ha encontrado una forma de implementar una pantalla de preferencias con un archivo xml pero sin usar: addPreferencesFromResource (int) o findPreference (CharSequence)? ¿O los métodos simplemente se han marcado obsoletos sin implementar la alternativa todavía?Preferencias sin métodos obsoletos

EDIT: El desarrollo de la versión Android 2.1

+1

¿Desde qué versión quieres apoyar? Como veo, se ha cambiado desde 11. Si está utilizando algo por debajo de esto, entonces no está en desuso para ellos. – Vinay

Respuesta

6

Por su obsoleto y cuál es la alternativa está muy bien explicado en la documentación:

Esta es la clase base para una actividad para mostrar una jerarquía de preferencias para el usuario. Antes de HONEYCOMB, esta clase solo permitía mostrar un solo conjunto de preferencias; esta funcionalidad debería encontrarse ahora en la nueva clase PreferenceFragment. Si está utilizando PreferenceActivity en su modo antiguo, la documentación allí se aplica a las API obsoletas aquí.

En otras palabras, si usted quiere ser PANAL compatible, entonces debería usar PreferenceFragment para su PreferenceActivity. Una explicación detallada sobre cómo usar fragmentos se puede encontrar en dev guide.

+2

Parece poco intuitivo. ¿Por qué es importante apoyar fragmentos de preferencias en lugar de preferencias? ¿Qué impide que Android desaproveche Layout o View a favor de LayoutFragment o ViewFragment? – KalEl

+0

Primero, los diseños son vistas. Entonces, básicamente preguntas sobre 'ViewFragment'. Y, bueno, tu pregunta es extraña. Porque 'View's son criaturas totalmente diferentes, y semánticamente no tienen nada en común con' Activities' o 'Fragments'. Por lo tanto, no tiene sentido tener 'ViewFragment'. Y si hubo razones para tenerlo, actualmente esto es técnicamente imposible: 'Fragmentos' no puede contener subfragmentos, mientras que' Vistas' se puede organizar en una jerarquía de árbol sofisticada. – inazaruk

+0

eso es genial, pero esto no me dice cómo almacenará automágicamente mis preferencias de aplicaciones, como las clases obsoletas do – slinden77

6

En Android 3, API Nivel 11, se introdujo el modelo de preferencias basado en fragmentos, desaprobando así los métodos que "no son relevantes para una actividad de preferencia basada en fragmentos moderna".

Como la referencia en línea es la última versión, muestra los métodos como obsoletos. Al manipular el menú desplegable de Nivel de API, puede marcar los métodos que no están en la versión de Android dada, pero no actualiza las descripciones para que coincidan, por lo que todavía se muestra como obsoleto.

Si no tiene planeado dar soporte a Android 3+, debe usar los métodos anteriores, ya que las soluciones basadas en fragmentos no funcionarán con versiones anteriores.

+0

, pero ¿cómo puedo hacer las preferencias para admitir Android 3+ y 3- ?? ¿¿Es posible?? findpreference no funciona para 3+, pero la preferencia basada en fragmentos no funciona para 3 -... – user23

+1

Para admitir ambos, haría una implementación para las versiones que admiten preferencias basadas en fragmentos y una para las que no lo hacen , y luego determinar cuál usar utilizando 'if (Build.VERSION.SDK_INT Flygenring

+0

Estaba tratando de evitar esa opción, pero me temo que es la única. ¡Gracias por tu respuesta! – user23

Cuestiones relacionadas