当前位置: 首页 > 知识库问答 >
问题:

lambda表达式中的错误返回类型:无法转换为布尔值

穆鸿飞
2023-03-14

我需要通过触摸按钮来更改形状类型。我尝试了这种方法,但我得到了一个错误,即形状类型不能转换为布尔值。代码:

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个答案

郝永思
2023-03-14

该按钮的setOnTouchListener提供了一个视图和运动事件,需要一个布尔返回类型。

giraffe.setOnTouchListener((view, event) -> {
    shapeType = ShapeType.GIRAFFE);
    return true; // return true if event is consumed, false otherwise
});
阎安邦
2023-03-14

您的onTouch()方法现在需要返回一个布尔值,您不会返回任何东西,请按如下所示更改lambda。

giraffe.setOnTouchListener(
(view, motionEvent) -> {
    shapeType = ShapeType.GIRAFFE;
    return false;
});
 类似资料: