W przypadku, gdy nie używasz, Custom Viewktóre jawnie zastępuje onPerformClick, 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.Buttonlub Button, musisz stworzyć prosty niestandardowy widok, który rozszerzy widok docelowy.
Przykład:
Klasa widoku niestandardowego:
public class UselessButton extends AppCompatButton {
public UselessButton(Context context) {
super(context);
}
public UselessButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public UselessButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean performClick() {
return super.performClick();
}
}
XML :
<stackoverflow.onEarth.UselessButton
android:id="@+id/left"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/left"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBaseline_toBaselineOf="@+id/right"
app:layout_constraintVertical_bias="0.5" />
Java :
left.setOnTouchListener((v, event) -> {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
enLeft = 1;
enRight = 0;
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
enLeft = 0;
v.performClick();
return false;
} else {
return false;
}
});
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żyjView.setPressed(boolean)
down.setOnTouchListener((v, event) -> {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
enFront = 0;
enBack = 1;
left.setPressed(true);
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
enBack = 0;
v.performClick();
v.setPressed(false);
return false;
} else {
return false;
}
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ś