Jestem całkiem nowy w programowaniu na Androida i właśnie natknąłem się na Preferencje. Znalazłem PreferenceScreen
i chciałem stworzyć za jego pomocą funkcję logowania. Jedyny problem, jaki mam, to to, że nie wiem, jak dodać przycisk „Zaloguj się” do pliku PreferenceScreen
.
Oto jak PreferenceScreen
wygląda mój :
<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>
Przycisk powinien znajdować się tuż pod dwoma EditTextPreference
literami.
Czy istnieje proste rozwiązanie tego problemu? Jedyne rozwiązanie, które znalazłem, nie działa, ponieważ używam subs PreferenceScreen
.
Aktualizacja:
Odkryłem, że mogę dodać przyciski w ten sposób:
<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>
a plik układu ( loginButtons.xml
) wygląda następująco:
<?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>
Teraz pojawiają się przyciski, ale nie mogę uzyskać do nich dostępu w kodzie. Próbowałem, findViewById()
ale to zwraca wartość null. Jakieś pomysły, jak mogę uzyskać dostęp do tych przycisków?
źródło
android:onClick="method"
do każdego przycisku, gdzie metoda jest zdefiniowana w działaniu jakopublic void method(View v)
.Odpowiedzi:
W przypadku XML:
Następnie dla javy w twoim
onCreate()
Będzie wyglądać jak normalne preferencje, z tylko tytułem i podsumowaniem, więc będzie wyglądać, jakby należało.
Edycja: przestawiłem się na używanie
@string/myCoolButton
i,getString(R.string.myCoolButton)
ponieważ najlepiej jest używać zasobów do pomocy kompilatora, tłumaczenia języków i łatwości zmian w ciągach.źródło
android:key="key"
ifindPreference("key");
używasz tego samego klucza.Przypuszczam, że jest za późno. Oto, co zrobiłem dla preferencji przycisków.
Preferencja w pliku preference.xml w folderze xml
i pref_reset_bd_button.xml w folderze układu
źródło
android:widgetLayout
to idealne połączenie między fragmentami i preferencjami (jedną lub obie zdefiniowane w XML). Wielkie dzięki. TutajChciałem dodać link Zakończ do preferencji i mogłem zmodyfikować kod Jakara, aby działał w następujący sposób:
Pierwotnie „Preference” to „EditTextPreference”, które ręcznie edytowałem.
Następnie w klasie:
źródło
Dodaj
Poniżej
układ przycisków:
Przycisk dostępu według:
Możesz umieścić przycisk na górze lub na dole ekranu, umieszczając go w RelativeLayout:
bottom_control_bar
To zadziałało dla mnie. Mam nadzieję, że mogę komuś pomóc z tym fragmentem kodu.
źródło
Nie sądzę, że istnieje łatwy sposób na dodanie przycisku do ekranu preferencji. Preferencje są ograniczone do:
Korzystając z ekranu preferencji, jesteś ograniczony do korzystania z tych opcji i nie ma jednego „preferencji przycisku”, którego można by łatwo użyć według własnych potrzeb.
Szukałem podobnej funkcjonalności, dodając przyciski do ekranu preferencji, ale wydaje się, że musisz zbudować własny ekran, aby zarządzać zmianą preferencji we własnej implementacji.
źródło
Możesz to zrobić w ten sposób, aby uzyskać dostęp do przycisku!
Nie zapomnij dodać
android:id
do LinearLayout, który zawiera przycisk w layoutButtons.xml , tjandroid:id="@+id/mylayout"
źródło
Możesz również dostosować układ preferencji, zastępując
Preference.onCreateView(parent)
. Poniższy przykład używa anonimowej klasy wewnętrznej, aby określić preferencje koloru czerwonego.Możesz użyć tej techniki, aby dodać przycisk do widoku domyślnego.
źródło
Jeśli ktoś poleci użytkownikowi kliknięcie jednego z elementów Preferencji i uchwytów, które klikają i na których opiera się Twoje rozwiązanie
PreferenceFragmentCompat
, możesz to zrobić:Jawa:
Kotlin:
źródło
Utwórz niestandardowy układ dla
SettingsFragment.java
nplayout_settings.xml
Następnie zapoznaj się z plikiem układu w
styles.xml
:A następnie, w swojej
onViewCreated()
metodzieSettingsFragment.java
, możesz użyć przycisku w ten sposób:źródło
try android: onClick = "myMethod" działa jak ozdoba dla prostych zdarzeń onclick
źródło
Preference
nie maonClick
nieruchomościandroid:onClick
w załączonym widoku przycisku, a nie w samej preferencji.