2011-11-30 17 views
12

Mam TextView z następującego kodu Zadanie:TextView onClick nie reaguje na jednym stuknięciem

Answer1TextView = (TextView) findViewById(R.id.editText1); 
Answer1TextView.setOnClickListener(answer1TextViewListener); 

i tu jest moje onClickListener:

private OnClickListener answer1TextViewListener = new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     if(Answer1Win){ 
      Toast.makeText(QuizScreen.this,"Correct ",2).show(); 
     } else 
     { 
      Toast.makeText(QuizScreen.this,"Incorrect, Pick Another Answer",2).show(); 
     } 
    } 
}; 

Mój problem jest Toast jest wyświetlany tylko po podwójne wciśnięcie. Nie mogę znaleźć ustawienia tych napędów, które można ustawić źle, aby nie wyświetlać po jednym dotknięciu.

+0

Czy to działa zarówno dla poprawnych i niepoprawnych, nawet po 2 zawory? – JustCurious

Odpowiedz

23

Pierwsze kliknięcie ustawia fokus na TextBox, a drugie kliknięcie zostaje potraktowane jako kliknięcie. Zamiast używać onClickListener, można mieć więcej szczęścia z onFocusChangeListener

+28

Alternatywnie, po prostu ustaw 'android: focusable =" false "' na TextView w XML lub wywołaj 'Answer1TextView.setFocusable (false);'. – kcoppock

+1

KC, .setFocusable (fałsz); naprawiono problem, dziękuję za pomoc. –

+0

KC dzięki za sugestię. .setFocusable (false); pracował dla mnie. Wspaniały. Publikuj przydatne informacje. jeszcze raz dzięki – sathish

1

Jak powiedział Chris, pierwszy kran skupia się TextView a drugi z kranu kliknie go.

Ustawienie android:focusableInTouchMode="false" rozwiązuje problem dla ekranów dotykowych, ale bez funkcji wyłączania dla urządzeń bez ekranu dotykowego.

Jeśli po prostu użyjesz android:focusable="false", który uniemożliwi na przykład użytkownikom d-pad z kliknięcia na widok w ogóle.

+0

android: focusable = "false" pracował dla mnie! +1 – dira

+0

Wygląda na to, że d-pad nie jest tak naprawdę aktualny w dzisiejszym świecie. Nie sądzę, że 'focusable =" false "' uniemożliwi funkcjonalność dla niepełnosprawnych użytkowników, o ile wiem. – CorayThan

+0

@CorayThan Biorąc pod uwagę, że oba atrybuty są równie łatwe do ustawienia, osobiście wolałbym wybrać ten, który nie łamie funkcjonalności na niektórych urządzeniach - nawet jeśli te urządzenia są obecnie mniej powszechne. Wszystko się zmienia (na przykład telewizory z Androidem mogą stać się bardziej powszechne) i zakładając, że wszyscy użytkownicy są ekranami dotykowymi, może to być przyczyną problemów w przyszłości - iw tym przypadku i tak nie przyniesie to natychmiastowej korzyści. (zrzeczenie się: Nie aktualizowałem systemu Android, zakładając, że atrybuty nadal robią to, co kiedyś, kiedy napisałem odpowiedź). –

0

Prawidłowe sposobem na to jest android:clickable="true"

+0

Domyślnie TextView jest klikalny. To prawdopodobnie nie jest problem. – greg7gkb

+0

Próbowałem go, ponieważ mam ten sam problem. kładąc^to, rozwiąż mój problem. Mój tekst ViewView wymaga tylko 1 stuknięcia, aby odpowiedzieć. –

1

Problem może być, że textIsSelectable jest prawdą. Ustaw textIsSelectable="false" dla TextView w XML.

0

użycie OnTouchListener zamiast onFocusListener wyzwala dwa razy, kiedy wchodzi i wychodzi z kluczowych

Powiązane problemy