Stworzyłem onTouchListener
. Niestety onTouch () wyświetla throws
mi ostrzeżenie:
com/calculator/activitys/Calculator$1#onTouch should call View#performClick when a click is detected
Co to znaczy? Nie znalazłem żadnych informacji o tym ostrzeżeniu. Oto pełny kod:
LinearLayout llCalculatorContent = (LinearLayout) fragmentView.findViewById(R.id.calculator_content);
llCalculatorContent.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Tools.hideKeyboard(getActivity(), getView());
getView().clearFocus();
return false;
}
});
android
ontouchlistener
Trzy Gracje
źródło
źródło
v.performClick()
. Implementacja zagra trochę dźwięku (jeśli masz ją włączoną na swoim urządzeniu) i wywoła onClickListener, którego prawdopodobnie nie przesłoniłeśOdpowiedzi:
Proszę bardzo:
źródło
performClick
, prawda? W tym przypadku nie rozumiem, dlaczego ostrzeżenie oMożesz powstrzymać Lint
Powinieneś zadzwonić do
performClick()
środkaonTouchEvent()
.lub
OnTouch
pływPrzeczytaj więcej tutaj
źródło
performClick()
.W przypadku, gdy nie używasz,
Custom View
które jawnie zastępujeonPerformClick
, ostrzeżenie nie zostanie usunięte po prostu podążając za odpowiedzią Secko.Oprócz jego odpowiedzi, aby zrobić to samo na klasach takich jak
android.widget.Button
lubButton
, musisz stworzyć prosty niestandardowy widok, który rozszerzy widok docelowy.Przykład:
Klasa widoku niestandardowego:
XML :
Java :
Bieżące problemy: ostrzeżenie zostaje rozwiązane przez IDE, ale nie widzę tego praktycznie wykonującego kliknięcie na prawdziwym urządzeniu z Androidem.
EDYCJA : Naprawiono zdarzenie kliknięcia: Użyj
View.setPressed(boolean)
źródło
po prostu wywołaj metodę performClick, na przykład:
źródło
Miałem podobny problem z a
MultiTouchListener
i rozwiązałem go, implementując aGestureDetector
i nasłuchując aSingleTap
(To nie usuwa ostrzeżenia, ale zaczyna wyzwalaćonClick
zdarzenia w moim widoku)źródło