Неверный тип возврата в лямбда-выражении: невозможно преобразовать в логическое значение - PullRequest
0 голосов
/ 12 февраля 2019

Мне нужно изменить shapeType, нажав кнопку.Я попробовал этот метод, но получил ошибку, которая говорит, что shapeType не может быть преобразован в логическое значение.Код:

public class MainActivity extends AppCompatActivity {

private ArFragment arFragment;

private enum ShapeType {
    GIRAFFE,
    HIPPO,
    ELEPHANT
}

private ShapeType shapeType = ShapeType.GIRAFFE;

@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.fragment);

    Button giraffe = findViewById(R.id.giraffebutt);
    Button hippo = findViewById(R.id.hippobutt);
    Button elephant = findViewById(R.id.elephantbutt);

    giraffe.setOnTouchListener(view -> shapeType = ShapeType.GIRAFFE);
    hippo.setOnTouchListener(view ->shapeType = ShapeType.HIPPO);
    elephant.setOnTouchListener(view ->shapeType = ShapeType.ELEPHANT);
  }
}

Ошибка:

Bad return type in lambda expression: ShapeType cannot be converted to boolean

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Кнопка setOnTouchListener обеспечивает View и MotionEvent и ожидает тип возврата boolean.

giraffe.setOnTouchListener((view, event) -> {
    shapeType = ShapeType.GIRAFFE);
    return true; // return true if event is consumed, false otherwise
});
0 голосов
/ 12 февраля 2019

Ваш onTouch() метод ожидает возврата логического значения, сейчас вы не возвращаете ничего, измените вашу лямбду следующим образом.

giraffe.setOnTouchListener(
(view, motionEvent) -> {
    shapeType = ShapeType.GIRAFFE;
    return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...