Нажатие кнопки запускает onclick само по себе и другую кнопку

#android

#Android

Вопрос:

У меня есть 2 Button ‘s в макете (принадлежит фрагменту). Давайте назовем их button1 и button2. Когда я нажимаю button2, это запускает onclick для button2. Когда я нажимаю button1, он запускает onclick для button1 (сам по себе), а затем для button2. Кажется, я не могу понять, почему это происходит.

 public class StartFragment implements View.OnClickListener {

    @BindView(R.id.button1)
    Button button1;
    @BindView(R.id.button2)
    Button button2;



    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.layout_start, container, false);
        ButterKnife.bind(this, view);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        return view;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button1:
                Log.d("LOG","button1 click");
            case R.id.button_by_country:
                Log.d("LOG","button2 click");
        }    
    }
}
  

Ответ №1:

Вы пропустили break инструкцию в switch :

  @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button1:
                Log.d("LOG","button1 click");
                break;  // <!---  ADD HERE

            case R.id.button_by_country:
                Log.d("LOG","button2 click");
                break;  // <!---  ADD HERE
        }    
    }