我的 onclicklistener 是灰色的,它没有带我到定义的目标

My onclicklistener is grayed out and it's not taking me to defined target

我的 onclicklistener 变灰了,它没有将我带到定义的目标。我该如何解决?

您可以忽略变灰 - 这是 Studio 告诉您这段代码是不必要的,可以用更短的代码替换的方式。

如果将鼠标光标悬停在灰色区域,您会看到 Studio 建议您改用 Lambda

Lambdas只是一种shorthand的写法方式。例如,onClickListener 的 Lambda 版本转换为此代码。

您可以选择使用 lambda 建议将代码保留为-is - 无论哪种方式,代码都会 运行.

最近新的部分View.OnClickListener()会被标记为灰色因为编译器建议使用 shorthand 方法来简化您的代码,这称为 lambda.

所以不是这个 View.OnClickListener(), 你现在将有 v->{} 其中 vview (你可以更改后者 v 到您选择的任何后者)。

快速解决这个问题; 点击灰色部分,然后选择 alt + Enter 以获得建议。

此外,

设置onClickListener有两种方式;

  1. 在您的 activity.
  2. 中实现 onClickListener
  3. 直接从您的按钮调用 onClickListener。

为第一个;

您的 activity 应该实现 onClickListener; 然后在 activity 的 onCreate 方法中,引用按钮并将其设置为按钮 onClick 的上下文;

yourButton1.setOnClickListener(this);
yourButton2.setOnClickListener(this);
yourButton3.setOnClickListener(this);

按钮可以多个

--> 在您生成的 onClick 方法中,您现在可以使用 switch 语句来检查单击了哪个按钮;

第二个 为此,请确保通过导入您在 xml 布局中使用的相应按钮来正确引用您的按钮。

导入android.widget.Button

使用 R.id.buttonName

在 activity 中引用来自 xml 的按钮

按钮 yourButton = findViewById(R.id.yourButtonId);

现在直接给按钮设置onClickListener;

//without lambda
yourButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Do whatever you want 

        }
    });


//with lambda
yourButton.setOnClickListener(v->{
//Do whatever here
});