Как использовать один обработчик событий для нескольких кнопок в Kotlin (я уже видел java с операторами switch) - PullRequest
0 голосов
/ 31 января 2020
<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" />

Это код для одной кнопки, остальные 2 выглядят одинаково. То, чего я не могу достичь, - это в MainActivity.kt иметь только один обработчик событий для всех трех. Я нашел код java и не могу правильно использовать его в качестве руководства, чтобы успешно преобразовать его в kotlin, есть подсказки?

1 Ответ

0 голосов
/ 31 января 2020

Вам необходимо реализовать интерфейс OnClickListener в вашей MainActivity с оператором switch, который поможет вам определить, какая кнопка нажата.

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:

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()
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...