Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo mostrar una barra de navegación personalizada en el fragmento de preferencias

Cómo mostrar una barra de navegación personalizada en el fragmento de preferencias

Los amigos que lo necesiten pueden consultar los controles integrados de Preferencia personalizados y las notas de PreferenceFragment.

Sabemos que las Preferencias del sistema no proporcionan muchos controles. Solo hay unos pocos controles, como CheckBoxPreference, ListPreference, EditTextPreference, RingtonePreference, etc. A veces no pueden satisfacer nuestras necesidades en este momento. personalizar, por ejemplo, personalizar una SeekBar para ajustar el volumen. Aquí no presentaré cómo personalizar las preferencias que contienen SeekBar. Puede ver la SeekBarPreference personalizada de Android.

Lo que hay que mencionar aquí es que nosotros. personalizar Este control a menudo necesita comunicarse con la Actividad o el Servicio. ¿Cómo operarlo en este momento?

También tomamos SeekBarPreference como ejemplo. Todos sabemos que al deslizar SeekBar, el sistema volverá a llamar al método onProgressChanged si necesitamos comunicarnos con

Actividad/Fragmento. /Servicio en comunicación onProgressChanged En este momento, necesitamos definir una interfaz en la que declaramos los métodos que necesitamos usar. Luego declaramos una función y proporcionamos la referencia a la interfaz como parámetro para Actividad/Fragmento/

Llamada de servicio.

la clase pública VolumeSeekBarPreferences extiende DialogPreference implementa OnSeekBarChangeListener {

seekBarCallBack privado atrás;

....

@Override

public void onProgressChanged(SeekBar seekBar, int Progress,

boolean fromUser) {

// TODO Código auxiliar de método generado automáticamente

....

back.setSeekBarVolume(mCurrentValue);

....

}

... .

interfaz pública seekBarCallBack {

public void setSeekBarVolume(int volumen

}

public void setSeekbarListener(seekBarCallBack barCallBack){

back = barCallBack;

}

}

Luego, en Actividad/Fragmento/Servicio, implemente la función a la que se hace referencia en el paso. interfaz en el control Preference.

la clase pública MyPreferenceFragment extiende los implementos de PreferenceFragment

OnPreferenceClickListener, OnPreferenceChangeListener {

Private VolumeSeekBarPreferences seekBarPrefere

nces;

.....

@Override

public void onCreate(Bundle saveInstanceState) {

// TODO Auto- código auxiliar de método generado

super.onCreate(savedInstanceState);

addPreferencesFromResource(R.layout.preference_setting);

//VolumeSeekBarPreferences es nuestro control de preferencias personalizado

seekBarPreferences = (VolumeSeekBarPreferences) findPreference("seekBarPreference");

seekBarPreferences.setSeekbarListener(new seekBarCallBack() {

@Override

público void setSeekBarVolume(int volume) {

// TODO Código auxiliar de método generado automáticamente

//La comunicación se implementa aquí

}

});

}

.....

}