Eu sou muito novo no Android Development e encontrei Preferências. Eu encontrei PreferenceScreen
e queria criar uma funcionalidade de login com ele. O único problema que tenho é que não sei como adicionar um botão "Login" ao PreferenceScreen
.
Aqui está a minha PreferenceScreen
aparência:
<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>
O botão deve estar logo abaixo dos dois EditTextPreference
s.
Existe uma solução simples para esse problema? A única solução que encontrei não estava funcionando porque eu uso sub PreferenceScreen
s.
Atualizar:
Eu descobri que posso adicionar botões desta maneira:
<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>
e o arquivo de layout ( loginButtons.xml
) fica assim:
<?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>
Então agora os botões aparecem, mas não consigo acessá-los no código. Eu tentei com findViewById()
isso, mas isso está retornando nulo. Alguma idéia de como eu poderia acessar esses botões?
fonte
android:onClick="method"
a cada botão, onde o método é definido na atividade comopublic void method(View v)
.Respostas:
Para o xml:
Então, para o java no seu
onCreate()
Isso parecerá uma preferência normal, com apenas um título e um resumo, portanto parecerá que pertence.
Editar: mudei para usar
@string/myCoolButton
egetString(R.string.myCoolButton)
porque é melhor usar recursos para assistência do compilador, tradução de idiomas e facilidade de alterações de String.fonte
android:key="key"
efindPreference("key");
estão usando a mesma chave.Suponho que seja tarde demais. Foi o que fiz para uma preferência de botão.
A preferência no arquivo preferência.xml na pasta xml
e pref_reset_bd_button.xml na pasta de layout
fonte
android:widgetLayout
é a conexão perfeita entre fragmentos e preferências (um ou ambos definidos em XML). Muito obrigado. AquiEu queria adicionar um link Exit às preferências e fui capaz de modificar o código de Jakar para fazê-lo funcionar assim:
Originalmente, a 'Preferência' era uma 'EditTextPreference' que eu editei manualmente.
Então na classe:
fonte
Adicionar
Abaixo
buttonLayout:
Botão de acesso por:
Você pode colocar o botão na parte superior ou inferior da tela colocando o botão em RelativeLayout:
bottom_control_bar
Isso funcionou para mim. Espero poder ajudar alguém com esse pedaço de código.
fonte
Eu não acho que exista uma maneira fácil de adicionar um botão a uma tela de preferências. As preferências são limitadas a:
Ao usar uma tela de preferências, você está limitado ao uso dessas opções e não há uma "preferência de botão" que possa ser facilmente usada para sua necessidade.
Eu estive procurando por funcionalidades semelhantes, adicionando botões à tela de preferências, mas parece que você precisa criar sua própria tela para isso, gerenciando a alteração nas preferências em sua própria implementação.
fonte
Você pode fazer assim para acessar o botão!
Não se esqueça de adicionar
android:id
ao LinearLayout que contém o botão no layoutButtons.xml , ou seja,android:id="@+id/mylayout"
fonte
Você também pode personalizar o layout de uma preferência substituindo
Preference.onCreateView(parent)
. O exemplo abaixo usa uma classe interna anônima para fazer preferências vermelhas.Você pode usar esta técnica para adicionar um botão à exibição padrão.
fonte
Se alguém instruir o usuário a clicar em um dos itens de Preferências e manipular os cliques e a sua solução se basear
PreferenceFragmentCompat
, você poderá fazer o seguinte:Java:
Kotlin:
fonte
Crie um layout personalizado para o
SettingsFragment.java
ielayout_settings.xml
Em seguida, consulte o arquivo de layout em seu
styles.xml
:E então, no
onViewCreated()
método do seuSettingsFragment.java
, você pode usar o botão assim:fonte
experimente android: onClick = "myMethod" funciona como um encanto para eventos simples de onclick
fonte
Preference
não temonClick
propriedadeandroid:onClick
na visualização do botão anexado, não na preferência em si.