[Android/Java] Lint warning op setOnTouchListener.

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 23:44
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public void Test() {
        TextView ThisTextView = new TextView(this);

        View.OnTouchListener ThisOnTouchListener = new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        break;
                    case MotionEvent.ACTION_MOVE:
                        break;
                    case MotionEvent.ACTION_UP:
                        v.performClick();
                        break;
                    default:
                        break;
                }
                return true;
            }
        };

        ThisTextView.setOnTouchListener(ThisOnTouchListener);
    }


Ik gebruik Android Studio 3.0.1., en het bovenstaande stukje code. :)

Als ik deze code laat inspecteren, krijg ik op de regel "ThisTextView.setOnTouchListener" de volgende Lint-warning:
Custom view `TextView` has OnTouchListener called on it but does not override performClick

If a `View` that overrides `onTouchEvent` or uses an `OnTouchListener` does not also implement `performClick` and call it when clicks are detected, the `View` may not handle accessibility actions properly. Logic handling the click actions should ideally be placed in `View#performClick` as some accessibility services invoke `performClick` when a click action should occur.


Het lijkt alsof veel mensen met dit probleem zitten want op internet kom ik ook vaak deze melding tegen, maar helaas tot nu toe geen oplossing bij gevonden.

Ook in de code van de detectie zelf https://android.googlesou...ccessibilityDetector.java heb ik geen oplossing hiervoor kunnen vinden.

Zodra ik "ThisTextView.setOnTouchListener" intyp komt de Lint-melding al tevoorschijn, Dus het lijkt erop dat het niets te maken heeft met de inhoud van de "ThisOnTouchListener" heeft. Een extra Clicklistener en combinaties van performClick(); hebben tot nu toe geen verbetering gegeven.

Heeft iemand een suggestie om die Lint-melding op te lossen?

Speel ook Balls Connect en Repeat

Beste antwoord (via Onbekend op 29-12-2017 17:44)


  • ErikKo
  • Registratie: Mei 2009
  • Laatst online: 23:23

ErikKo

Rippie

Ik geef toe dat het niet heel makkelijk te vinden was, maar hopelijk geeft deze pagina antwoord op je vraag:
https://developer.android....html#custom-touch-events

Gevonden met Google zoekende op keyword "View#performClick".

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • ErikKo
  • Registratie: Mei 2009
  • Laatst online: 23:23

ErikKo

Rippie

Ik geef toe dat het niet heel makkelijk te vinden was, maar hopelijk geeft deze pagina antwoord op je vraag:
https://developer.android....html#custom-touch-events

Gevonden met Google zoekende op keyword "View#performClick".

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 23:44
Ik had wel op die losse woorden gezocht, maar nog niet met dat hekje ertussen.
Vreemd dat het schijnbaar noodzakelijk is om een nieuwe klasse daarvoor aan te maken die enkel de performClick() af moet handelen welke verder niets doet, terwijl de setOnTouchListener altijd deze waarschuwing genereert op de originele klasse.

Maar het is gelukt, thanks. d:)b

Speel ook Balls Connect en Repeat