Utworzyłem układ, który zawiera dwa przyciski, Następny i Poprzedni. Pomiędzy przyciskami generuję dynamiczne widoki. Więc kiedy uruchamiam aplikację po raz pierwszy, chcę wyłączyć przycisk „Poprzedni”, ponieważ nie będzie żadnych wcześniejszych widoków. Chcę również wyłączyć przycisk „Dalej”, gdy nie ma więcej widoków do wyświetlenia. Czy istnieje możliwość wyłączenia przycisków?
369
Nie możesz go włączyć ani wyłączyć w swoim pliku XML (ponieważ układ jest ustawiony w czasie wykonywania), ale możesz ustawić, czy można go kliknąć przy uruchomieniu działania za pomocą
android:clickable
.źródło
Po prostu piszesz jeden wiersz kodu w swojej działalności
Jeśli chcesz włączyć ten sam przycisk, po prostu napisz
źródło
((Button)findViewById(R.id.mybutton)).setEnabled(false);
Tak, można go wyłączyć w XML za pomocą:
źródło
android:enabled
kiedy zaczniesz go pisać. (Nawet do dziś.)setEnabled
pracujeW Javie, gdy masz już odniesienie do przycisku:
Aby włączyć / wyłączyć przycisk, możesz użyć:
Lub:
Ponieważ chcesz wyłączyć przycisk od samego początku, możesz użyć button.setEnabled (false); w metodzie onCreate. W przeciwnym razie z XML możesz bezpośrednio użyć:
Więc:
źródło
W moim przypadku,
działa dobrze i włącza i wyłącza przycisk tak, jak powinien. Ale gdy stan przycisku zostanie wyłączony, nigdy nie wraca do stanu włączonego, chociaż można go kliknąć. Próbowałem unieważnić i odświeżyć stan do rysowania, ale bez powodzenia.
Jeśli ty lub ktokolwiek ma podobny problem, to co dla mnie działa, to ponowne ustawienie tła do rysowania. Działa na dowolnym poziomie interfejsu API.
źródło
W Kotlin, jeśli odwołujesz się do widoku przycisku z identyfikatorem, włącz / wyłącz przycisk tak jak
layout.xml
activity.kt
źródło
najpierw w xml ustaw przycisk jako
android:clickable="false"
następnie w kodzie
oncreate()
metoda inside ustaw właściwość button jakonastępnie wewnątrz przycisku kliknij zmień kod na
źródło
NIEPRAWIDŁOWY SPOSÓB W SŁUCHAWCE DO STOSOWANIA ZMIENNEGO ZAMIAST PARAMETRU !!!
WŁAŚCIWY SPOSÓB:
EDYCJA: W odpowiedzi na @ jeroen-bollen
po kliknięciu widoku obiekt klasy View wywołuje wywołanie metody onClick () wysyłającej jako sam parametr, więc parametr widoku zerowego nie powinien wystąpić, jeśli jest to błąd asercji , może się to zdarzyć na przykład, gdy klasa obiektu widoku została w międzyczasie zniszczona (dla przykład zebrany przez GC) lub metoda została zmieniona z powodu włamania
trochę o instanceof i null
trzy słowa autora
JEŚLI PYTAJ DLACZEGO?
NAJBARDZIEJ UNIKAJ NullPointerException
Niewiele więcej kodu pozwoli zaoszczędzić Twój czas na późniejszym śledzeniu błędów w twoim kodzie i zmniejszy liczbę nieprawidłowości.
rozważ następujący przykład:
źródło
v
nie jestButton
.Z Kotlin możesz to zrobić,
źródło