• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

.setfocusable(true) nie działa

VPS Starter Arubacloud
0 głosów
195 wizyt
pytanie zadane 8 lipca 2021 w Java przez myto Nowicjusz (120 p.)

Witam.

Czy ktoś ma pomysł dlaczego pole EditText nie staje się "klikalne" po użyciu .setfocusable(true) i .setclicable(true)?

Jeżeli wcześniej użyję .setfocusable(false) i .setclicable(false) to pole staje się nieaktywne i nie daje się wyprowadzić z tego stanu. Poniżej fragment kodu:

if (fydSpinner.equals("AIII")) {
    fydValue.setText(R.string.fydAIIIValue);
    fydValue.setFocusable(false);
    fydValue.setClickable(false);
}
if (fydSpinner.equals("AIIIN")) {
    fydValue.setText(R.string.fydAIIINValue);
    fydValue.setFocusable(false);
    fydValue.setClickable(false);
}
if (fydSpinner.equals("others...") || fydSpinner.equals("inne...")) {
    fydValue.setText("0");
    fydValue.setFocusable(true);
    fydValue.setClickable(true);
}

1 odpowiedź

0 głosów
odpowiedź 8 lipca 2021 przez Wiciorny Ekspert (277,460 p.)

 ogólnie to w wielkim skrócie można powiedzieć ze setfocusable(true)  ustawia komponent na domyślny. Czyli masz w okienku 20 TextArea, a ustawienie jednego z nich na setFocusable, sprawi ze po uruchomieniu aplikacji kursor pojawi sie właśnie w tym polu.. 

są dwie opcje ustaw po prostu zamiast setFocusable 

fydValue.setFocusableInTouchMode(true);
fydValue.setEnabled(true);

generalnie jeśli pole jest aktywne samo w sobie to setFocusable nie zadziała. Polecam zanim się skorzysta z metod, poczytać implementacje wewnętrzną co się dzieje kiedy coś ustawiasz lub nie, bo to że metoda nazywa się 

 fydValue.setFocusable(false);
 fydValue.setClickable(false)

to defultowo wyłącza potem mechanizm ustawiając Enabled na false :), które nie wraca do wartości bazowych  

 

komentarz 8 lipca 2021 przez myto Nowicjusz (120 p.)
No oczywiście .setEnabled załatwia sprawę.

Sam nie wiem dlaczego tak kombinowałem.

Dzięki za pomoc.
komentarz 8 lipca 2021 przez Wiciorny Ekspert (277,460 p.)
zdaje mi się, że nadal nie rozumiesz dlaczego to nie działało.

Wiesz dlaczego, musisz ustawić  setEnabled? :) - doczytaj, czemu albo set enabled, albo ustawienie TouchMode zadziała, a twoje nie.
TO chodzi o fakt tego co dzieje się "jako SIDE-EFFECT" przy użyciu innych metod.

Podobne pytania

0 głosów
1 odpowiedź 84 wizyt
pytanie zadane 5 czerwca 2020 w Java przez szynszyl97 Początkujący (410 p.)
0 głosów
0 odpowiedzi 84 wizyt
pytanie zadane 29 maja 2018 w Java przez Radek Begej Użytkownik (580 p.)
0 głosów
2 odpowiedzi 277 wizyt
pytanie zadane 8 października 2016 w Android, Swift, Symbian przez Kaspero Obywatel (1,920 p.)

92,979 zapytań

141,943 odpowiedzi

321,189 komentarzy

62,308 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...