Soy bastante nuevo en el desarrollo de Android y acabo de encontrar Preferencias. Encontré PreferenceScreeny quería crear una funcionalidad de inicio de sesión con él. El único problema que tengo es que no sé cómo podría agregar un botón "Iniciar sesión" PreferenceScreen.
Así PreferenceScreenes como se ve mi :
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
...
    <PreferenceScreen android:title="@string/login" android:key="Login">
        <EditTextPreference android:persistent="true" android:title="@string/username" android:key="Username"></EditTextPreference>
        <EditTextPreference android:title="@string/password" android:persistent="true" android:password="true" android:key="Password"></EditTextPreference>
    </PreferenceScreen>
...
</PreferenceScreen>
El botón debe estar justo debajo de los dos EditTextPreferences.
¿Hay una solución simple para este problema? La única solución que encontré no funcionaba porque uso sub PreferenceScreens.
Actualizar:
Descubrí que puedo agregar botones de esta manera:
<PreferenceScreen android:title="@string/login" android:key="Login">
        <EditTextPreference android:persistent="true" android:title="@string/username" android:key="Username"></EditTextPreference>
        <EditTextPreference android:title="@string/password" android:persistent="true" android:password="true" android:key="Password"></EditTextPreference>
        <Preference android:layout="@layout/loginButtons" android:key="loginButtons"></Preference>
</PreferenceScreen>
y el archivo de diseño ( loginButtons.xml) se ve de esa manera:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:weightSum="10" 
    android:baselineAligned="false" android:orientation="horizontal">
    <Button android:text="Login" android:layout_width="fill_parent"
        android:layout_weight="5" android:layout_height="wrap_content"
        android:id="@+id/loginButton" android:layout_gravity="left"></Button>
    <Button android:text="Password?" android:layout_width="fill_parent"
        android:layout_weight="5" android:layout_height="wrap_content"
        android:id="@+id/forgottenPasswordButton"></Button>
</LinearLayout>
Así que ahora aparecen los botones pero no puedo acceder a ellos en código. Lo probé findViewById()pero esto está volviendo nulo. ¿Alguna idea de cómo podría acceder a estos botones?
fuente

android:onClick="method"a cada botón, donde el método se define en la actividad comopublic void method(View v).Respuestas:
Para el xml:
Entonces para el Java en tu
onCreate()Esto aparecerá como una preferencia normal, con solo un título y un resumen, por lo que parecerá que pertenece.
Editar: cambié a usar
@string/myCoolButtonygetString(R.string.myCoolButton)porque es mejor usar recursos para la asistencia del compilador, la traducción de idiomas y la facilidad de los cambios de cadena.fuente
android:key="key"yfindPreference("key");están utilizando la misma clave.Supongo que es demasiado tarde. Esto es lo que he hecho para una Preferencia de botón.
La preferencia en el archivo preferencia.xml en la carpeta xml
y pref_reset_bd_button.xml en la carpeta de diseño
fuente
android:widgetLayoutes la conexión perfecta entre fragmentos y preferencias (uno o ambos definidos en XML). Muchas gracias. AquíQuería agregar un enlace de salida a las preferencias y pude modificar el código de Jakar para que funcionara así:
Originalmente, la 'Preferencia' era una 'Edición de referencia de texto' que edité manualmente.
Luego en la clase:
fuente
Añadir
Abajo
buttonLayout:
Botón de acceso por:
Puede obtener el botón en la parte superior o inferior de la pantalla colocando el botón en RelativeLayout:
barra_control_bajo
Esto funcionó para mí. Espero poder ayudar a alguien con este código.
fuente
No creo que haya una manera fácil de agregar un botón a una pantalla de preferencias. Las preferencias se limitan a:
Mientras usa una pantalla de preferencias, está limitado al uso de estas opciones, y no hay una sola "preferencia de botón" que pueda usarse fácilmente para sus necesidades.
He estado buscando una funcionalidad similar, con agregar botones a la pantalla de preferencias, pero parece que necesita construir su propia pantalla para esto, administrando el cambio a las preferencias en su propia implementación.
fuente
¡Puedes hacerlo así para acceder al botón!
No olvide agregar
android:ida LinearLayout que contiene el botón en layoutButtons.xml , es decirandroid:id="@+id/mylayout"fuente
También puede personalizar el diseño de una Preferencia anulando
Preference.onCreateView(parent). El siguiente ejemplo utiliza una clase interna anónima para hacer preferencias rojas.Puede usar esta técnica para agregar un botón a la vista predeterminada.
fuente
Si alguien llega a indicarle al usuario que haga clic en uno de los elementos de Preferencias y maneja ese clic y su solución se basa
PreferenceFragmentCompat, entonces puede hacer esto:Java:
Kotlin:
fuente
Cree un diseño personalizado para el
SettingsFragment.javaielayout_settings.xmlLuego, consulte el archivo de diseño en su
styles.xml:Y luego, en el
onViewCreated()método de tuSettingsFragment.java, puedes usar el botón de esta manera:fuente
pruebe android: onClick = "myMethod" funciona de maravilla para eventos onclick simples
fuente
Preferenceno tieneonClickpropiedadandroid:onClicken la vista del botón adjunto, no en la preferencia en sí.