如何对Kotlin中的多个按钮使用一个事件处理程序(我已经看过java中的switch语句)

如何对Kotlin中的多个按钮使用一个事件处理程序(我已经看过java中的switch语句),kotlin,Kotlin,这是一个按钮的代码,其他两个看起来一样。我似乎无法实现的是MainActivity.kt中只有一个事件处理程序来处理所有三个事件。我找到了java代码,无法将其正确用作成功将其传输到kotlin的指南,有什么提示吗?您需要在MainActivity中实现OnClickListener界面,并使用一个switch语句来帮助您确定单击了哪个按钮 <Button android:id="@+id/firstButton" android:layout_width=

这是一个按钮的代码,其他两个看起来一样。我似乎无法实现的是MainActivity.kt中只有一个事件处理程序来处理所有三个事件。我找到了java代码,无法将其正确用作成功将其传输到kotlin的指南,有什么提示吗?

您需要在
MainActivity
中实现
OnClickListener
界面,并使用一个switch语句来帮助您确定单击了哪个按钮

<Button
        android:id="@+id/firstButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="firstClicked"
        android:text="Color 1"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.117"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.499" />
对于kotlin:

public class SecondActivity extends AppCompatActivity implements View.OnClickListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Button b1 = findViewById(R.id.b1);
        Button b2 = findViewById(R.id.b2);
        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {

            case R.id.b1:
                Intent in = new Intent(SecondActivity.this, MainActivity.class);
                SecondActivity.this.startActivity(in);
                break;

            case R.id.b2:
                Toast.makeText(this, "Yay", Toast.LENGTH_SHORT).show();
                break;

            default:
                break;
        }
    }
}

我看过这段代码,但我要找的是Kotlin中的一个版本。Kotlin没有使用switch,因为它是when()…请检查更新的答案,并让我知道它是否有效。我会检查它,谢谢。有一个问题,我昨天开始使用kotlin,我想知道查看“View”之后的问号是什么意思。如果我没有弄错的话,视图是参数的类型。是?表示View类型的变量是否接受null值。在本例中,p0是View类型,它可以接受空值,这就是为什么我们使用安全调用参数的原因?在when表达式中,当您说btn_start_second.setOnClickListener(this)时,“this”指的是活动?
class MainActivity : AppCompatActivity(), View.OnClickListener {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        btn_start_second.setOnClickListener(this)
        btn_start_toast.setOnClickListener(this)
    }

    override fun onClick(p0: View?) {
        when (p0?.id) {

            R.id.btn_start_toast -> {
                Toast.makeText(this,"Toast", Toast.LENGTH_SHORT).show()
            }

            R.id.btn_start_second -> {
                startSecondApp()
            }

        }
    }
}