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

我需要通过触摸按钮来更改 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


江户川乱折腾
浏览 577回答 2
2回答

慕少森

您的onTouch()方法现在期望返回一个布尔值,您没有返回任何东西,如下更改您的 lambda。giraffe.setOnTouchListener((view, motionEvent) -> {    shapeType = ShapeType.GIRAFFE;    return false;});

守着一只汪

ButtonsetOnTouchListener提供一个Viewand MotionEvent,并期望一个boolean返回类型。giraffe.setOnTouchListener((view, event) -> {    shapeType = ShapeType.GIRAFFE);    return true; // return true if event is consumed, false otherwise});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java