Soy bastante nuevo en el desarrollo de Android y acabo de encontrar Preferencias. Encontré PreferenceScreen
y 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í PreferenceScreen
es 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 EditTextPreference
s.
¿Hay una solución simple para este problema? La única solución que encontré no funcionaba porque uso sub PreferenceScreen
s.
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/myCoolButton
ygetString(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:widgetLayout
es 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:id
a 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.java
ielayout_settings.xml
Luego, 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
Preference
no tieneonClick
propiedadandroid:onClick
en la vista del botón adjunto, no en la preferencia en sí.