J'ai créé un fichier onTouchListener
. Malheureusement, onTouch () throws
m'avertit:
com/calculator/activitys/Calculator$1#onTouch should call View#performClick when a click is detected
Qu'est-ce que ça veut dire? Je n'ai trouvé aucune information sur cet avertissement. Voici le code complet:
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
la source
la source
v.performClick()
. L'implémentation jouera un petit son (si vous l'avez activée sur votre appareil) et appellera le onClickListener, que vous n'avez probablement pas écraséRéponses:
Voici:
la source
performClick
, non? Dans ce cas, je ne comprends pas pourquoi l'avertissement de peluche est toujours làVous pouvez supprimer la charpie
Vous devriez appeler à l'
performClick()
intérieuronTouchEvent()
.ou
OnTouch
coulerEn savoir plus ici
la source
performClick()
. S'il vous plaît partager votre codeSi vous n'utilisez pas un
Custom View
qui remplace explicitementonPerformClick
, l'avertissement ne sera pas supprimé en suivant simplement la réponse de Secko.En plus de sa réponse, pour faire la même chose sur des classes comme
android.widget.Button
ouButton
vous devez faire une simple vue personnalisée qui étend la vue cible.Exemple :
La classe de vue personnalisée:
XML :
Java :
Problèmes actuels: l'avertissement est résolu par l'EDI, mais ne peut pas voir cette action de clic pratiquement en cours d'exécution sur un vrai appareil Android.
EDIT : Correction de l'obtention de l'événement de clic: utilisation
View.setPressed(boolean)
la source
appelez simplement la méthode performClick, comme ceci:
la source
J'ai eu un problème similaire avec a
MultiTouchListener
et je l'ai résolu en implémentant aGestureDetector
et en écoutant unSingleTap
(cela ne supprime pas l'avertissement mais commence à déclencher desonClick
événements sur ma vue)la source