我需要通过触摸按钮来更改 shapeType。我尝试了这种方法,但出现错误,提示 shapeType 无法转换为布尔值。代码:public class MainActivity extends AppCompatActivity {private ArFragment arFragment;private enum ShapeType { GIRAFFE, HIPPO, ELEPHANT}private ShapeType shapeType = ShapeType.GIRAFFE;@SuppressLint("ClickableViewAccessibility")@Overrideprotected 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 回答

慕少森
TA贡献2019条经验 获得超9个赞
您的onTouch()方法现在期望返回一个布尔值,您没有返回任何东西,如下更改您的 lambda。
giraffe.setOnTouchListener(
(view, motionEvent) -> {
shapeType = ShapeType.GIRAFFE;
return false;
});

守着一只汪
TA贡献1872条经验 获得超4个赞
ButtonsetOnTouchListener提供一个Viewand MotionEvent,并期望一个boolean返回类型。
giraffe.setOnTouchListener((view, event) -> {
shapeType = ShapeType.GIRAFFE);
return true; // return true if event is consumed, false otherwise
});
添加回答
举报
0/150
提交
取消