java - lambda 表达式中的返回类型错误 : Cannot be converted to boolean

标签 java android lambda

我需要通过触摸按钮来更改 shapeType。我尝试了这种方法,但出现错误,指出 shapeType 无法转换为 boolean 值。 代码:

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

最佳答案

您的 onTouch() 方法期望返回一个 boolean 值,现在您没有返回任何内容,请按如下方式更改您的 lambda。

giraffe.setOnTouchListener(
(view, motionEvent) -> {
    shapeType = ShapeType.GIRAFFE;
    return false;
});

关于java - lambda 表达式中的返回类型错误 : Cannot be converted to boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54644714/

相关文章:

android - Jetpack 撰写和导航 : Problems share ViewModel in nested graph

android - 是否可以将 Android 应用程序设置为连接到开发服务器?

c# - Lambda 表达式 : == vs. .Equals()

android - 将 qemu 监视器与 android 模拟器一起使用

lambda - 是否可以使用两次 ifPresent,每次检查不同的返回或 fork 映射

java - 如何在Java 8中传递多个参数和一个函数,然后执行带参数的函数?

java - 即使函数签名抛出它,编译器也会提示未处理的 IOException

java - 运行 testng 套件时,SeleniumGrid2 自定义 maxSession 似乎未按预期工作(并行 =“classes” )

java - 使复活节计算器代码更高效的可能方法?

java - java泛型类中是否可以有可变数量的元素类型