Single page PreferenceActivity w / sin encabezados / fragmentos?

Estoy tratando de lograr algo que creo que es bastante fácil, pero estoy desconcertado sobre cómo lograrlo utilizando la clase PreferenceActivity y la etiqueta de encabezado de preferencia xml.

Cuando el usuario teclea el icono de configuración de la aplicación, me gustaría que se presentaran con una pequeña lista de casillas de verificación y listas. Sólo tengo un solo fragmento de preferencia. Hasta ahora puedo configurar los archivos xml de PreferenciaActividad (preferencias.xml y fragmentos de preferencia xmls) para mostrar el encabezado único del fragmento de preferencia. Cuando el usuario selecciona esa cabecera la pantalla de preferencias es exactamente como yo lo quiero, sin embargo, no puedo encontrar una forma de saltar mostrando la primera pantalla de encabezado.

Parece un desperdicio tener que tocar el icono de configuración / preferencias, mostrar un solo encabezado que luego se pulsa para llegar a los ajustes / preferencias reales.

Entiendo cómo esto puede ser muy útil si desea categorizar sus preferencias, pero para algo simple, esto agrega sobrecarga y parece bastante torpe.

Espero que estuviera claro. En resumen aquí está mi pregunta:

¿Cuál es la nueva forma preferida de usar la clase PreferenceActivity y la etiqueta de encabezado de preferencias para mostrar simplemente una sola pantalla de opciones sin encabezado?

Después de mirar alrededor un poco más parece que estoy tratando de hacer lo que los métodos antiguos hicieron de una manera directa. Estoy tratando de hacer esto sin usar ninguna de las funciones obsoletas.

Gracias de antemano, B.

La nueva forma preferida es mostrar un único PreferenceFragment como el contenido principal de cualquier actividad. No necesita ser PreferenceActivity . Consulte la muestra de demostración de APIs

 public class FragmentPreferences extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the main content. getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragment()).commit(); } public static class PrefsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); } } } 

Estaba buscando una respuesta que coincidiera con esta pregunta. Eventualmente, lo elaboré de varias otras fuentes. Para aquellos que aún quieren que responda, esto es lo que funcionó para mí. (Nota: tanto los SDK mínimos como los SDK objetivo se establecen en 15 en este proyecto).

  1. Deshágase de los jefes de preferencias, no los necesitará.
  2. Cree una pantalla de preferencias con la configuración de página única.
  3. Cree una clase de actividad de preferencias (SettingsActivity a continuación).
  4. Cree una clase en línea que extiende PreferenceFragment (LocationFragment a continuación).
  5. Defina la clase en el Manifiesto.
  6. Inicie la tarea: consulte el código de menú siguiente.

La clase de preferencia que muestra la pantalla de ajustes individuales.

 public class SettingsActivity extends PreferenceActivity { private final static String TAG = "SettingsAcitivity"; public SettingsActivity() {} @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyLog.d(TAG, "onCreate"); getFragmentManager().beginTransaction() .replace(android.R.id.content, new LocationFragment()).commit(); } public class LocationFragment extends PreferenceFragment { private final static String TAG = "LocationFragment"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyLog.d(TAG, "onCreate"); addPreferencesFromResource(R.xml.locationsettings); } } } 

El código para mostrar los ajustes:

 @Override public boolean onOptionsItemSelected(MenuItem item) { MyLog.d(TAG, "onOptionsItemSelected"); switch (item.getItemId()) { case R.id.menu_main_help: break; case R.id.menu_main_about: break; case R.id.menu_main_settings: MyLog.d(TAG, "Settings"); Intent settingsIntent = new Intent(this, SettingsActivity.class); startActivity(settingsIntent); break; } return true; } 

La tecla Atrás finaliza la ConfiguraciónActividad. Las rutinas de preferencia incorporadas guardan los cambios. La función onResume que tengo hace un getSettings () que actualiza cualquier configuración cambiada usada por la actividad que llama (MainActivity en este caso).

Eso es.

  • Actualizar android PreferenceFragment
  • SwitchPreference y CheckBoxPreference en el código
  • El tamaño de fuente de título de preferencia personalizada es mayor que la preferencia estándar en android 5
  • ¿Cómo llamo a un PreferenceFragment específico de una PreferenceActivity?
  • ¿Cómo puedo cambiar el tamaño de un título CheckBox o hacer que envuelva en un xml PreferenceScreen?
  • Guardar ArrayList en las preferencias compartidas
  • Cómo abrir un hijo anidado PreferenceScreen en Android
  • Ocultar una preferencia en una PreferenciaActividad
  • ¿Cómo obtener preferencias de tono en tiempo de ejecución?
  • Cómo cargar la misma preferencia de pantalla en el detalle PreferenceFragment
  • Interruptor principal de encendido / apagado en ActionBar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.