Agregar el botón a PreferenceScreen
No puedo averiguar cómo me gustaría ir sobre la aplicación de un botón de arriba en un PreferenceScreen
. Un botón arriba muestra un cursor en la barra de acción junto al icono de la aplicación que le permite navegar por la jerarquía de la aplicación, más información aquí .
Tengo un fragmento de la preferencia que exhibe cuando mi actividad principal se abre y puedo conseguir el botón ascendente para exhibir agregando esta línea "getActionBar (). SetDisplayHomeAsUpEnabled (verdadero);":
- Realizar un cálculo en Java da una respuesta completamente errónea
- ¿Cómo extender la clase de URL para soportar otros protocolos en java (android)?
- Android AudioRecord falla al inicializar (Otras soluciones no funcionan)
- Problema en la lectura de la palabra francesa desde el archivo de texto en java / android
- ¿Cómo hacer que el código se detenga por un par de segundos en android?
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActionBar().setDisplayHomeAsUpEnabled(true); getFragmentManager().beginTransaction() .replace(android.R.id.content, new SettingsFragment()) .commit();
Esto hace que el botón de arriba aparezca en el fragmento de preferencia, pero sólo quiero mostrar el botón de arriba cuando se abre uno de mis PreferenceScreens
, lo que permite la navegación al principal PreferenceFragment
.
Mi aplicación es análoga a la aplicación de configuración principal. Sólo las pantallas secundarias, como Acceso a la ubicación, que se abre desde la aplicación Configuración principal, tienen la flecha hacia arriba.
- Android - Dibujo de un laberinto de lienzo con el movimiento de caracteres suave
- Obtener la última fecha modificada de archivos en un directorio
- Método get () de AsyncTask: ¿Existe algún escenario en el que realmente sea la mejor opción?
- Guardar archivo en Android con espacios en el nombre de archivo
- Java System.nanoTime () enorme diferencia en el tiempo transcurrido
- Obtener un actor por nombre en libgdx
- ¿Es posible enviar comandos HDMI CEC desde un dispositivo Android?
- Analizar la clase anónima no implementa método abstracto
Si su aplicación completa es una pantalla de preferencias, puede hacer que su actividad principal sea una PreferenceActivity
y los subniveles pueden ser fragmentos. De esta manera, la funcionalidad "arriba" va a ser por defecto lo que estás buscando.
De esta pregunta , simplemente agregé estos dos bloques de código a mi Fragmento de preferencia:
@Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { super.onPreferenceTreeClick(preferenceScreen, preference); // If the user has clicked on a preference screen, set up the action bar if (preference instanceof PreferenceScreen) { initializeActionBar((PreferenceScreen) preference); } return false; }
Y éste:
/** Sets up the action bar for an {@link PreferenceScreen} */ public static void initializeActionBar(PreferenceScreen preferenceScreen) { final Dialog dialog = preferenceScreen.getDialog(); if (dialog != null) { // Inialize the action bar dialog.getActionBar().setDisplayHomeAsUpEnabled(true); // Apply custom home button area click listener to close the PreferenceScreen because PreferenceScreens are dialogs which swallow // events instead of passing to the activity // Related Issue: https://code.google.com/p/android/issues/detail?id=4611 View homeBtn = dialog.findViewById(android.R.id.home); if (homeBtn != null) { OnClickListener dismissDialogClickListener = new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }; // Prepare yourselves for some hacky programming ViewParent homeBtnContainer = homeBtn.getParent(); // The home button is an ImageView inside a FrameLayout if (homeBtnContainer instanceof FrameLayout) { ViewGroup containerParent = (ViewGroup) homeBtnContainer.getParent(); if (containerParent instanceof LinearLayout) { // This view also contains the title text, set the whole view as clickable ((LinearLayout) containerParent).setOnClickListener(dismissDialogClickListener); } else { // Just set it on the home button ((FrameLayout) homeBtnContainer).setOnClickListener(dismissDialogClickListener); } } else { // The 'If all else fails' default case homeBtn.setOnClickListener(dismissDialogClickListener); } } } }
Echa un vistazo a esto .
Para el XML:
<Preference android:title="Acts like a button" android:key="button" android:summary="This will act like a button"/>
Entonces para el Java en su onCreate()
Preference button = (Preference)findPreference("button"); button.setOnPreferenceClickListener( new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference arg0) { //code for what you want it to do return true; } });