Не работает пример из видеоурока

149
10 января 2022, 20:00
package com.example.gest;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GestureDetectorCompat;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener {
    private TextView txt;
    private GestureDetectorCompat gd;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txt = (TextView)findViewById(R.id. textHello);
        gd = new GestureDetectorCompat(this, this);
        gd.setOnDoubleTapListener(this);
    }
    @Override
    public boolean onTouchEvent (MotionEvent event) {
        gd.onTouchEvent(event);
        return super.onTouchEvent(event);
    }

    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        return false;
    }
    @Override
    public boolean onDoubleTap(MotionEvent e) {
        return false;
    }
    @Override
    public boolean onDoubleTapEvent(MotionEvent e) {
        return false;
    }
    @Override
    public boolean onDown(MotionEvent e) {
        return false;
    }
    @Override
    public void onShowPress(MotionEvent e) {
    }
    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        return false;
    }
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        return false;
    }
    @Override
    public void onLongPress(MotionEvent e) {
        txt.setText("onLongPress: " + motionEvent.toString());
    }
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        return false;
    }
}

Ошибка:

error: cannot find symbol variable motionEvent

Если переименовать motionEvent в MotionEvent, то будет другая ошибка:

error: non-static method toString() cannot be referenced from a static context

Answer 1

У вас в методе onLongPress переменная называется e, а в консоль вы пытаетесь вывести какой-то motionEvent. Замените motionEvent.toString() на e.toString().

@Override
public void onLongPress(MotionEvent e) {
    txt.setText("onLongPress: " + e.toString());
}
READ ALSO
Выбор зарезервированного порта

Выбор зарезервированного порта

Подскажите, какой, по вашему мнению, можно выбрать порт для планируемой системы автоматического православного IT-исповеданияСуть разработки...

162
Как Можно перегрузить Оператор ==, если необходимо проверить указатель на nullptr

Как Можно перегрузить Оператор ==, если необходимо проверить указатель на nullptr

Допустим в Классе есть указатель, тогда каким образом можно его проверить на nullptrПри попытке использовать простой if( a == nullptr) выдаёт ошибку...

153