Как узнать, какая кнопка нажата?

Я создаю два фрагмента:

 <fragment
    android:name="BoxFragment"
    android:layout_width="150dp"
    android:layout_height="80dp"
    android:id="@+id/box_fragment_1"
    android:layout_below="@+id/box_fragment_2"
    android:layout_alignParentStart="true"
    android:layout_marginTop="42dp"     
    tools:layout="@layout/fragment_box" />

<fragment
    android:layout_width="150dp"
    android:layout_height="50dp"
    android:id="@+id/box_fragment_2"
    android:layout_centerVertical="true"
    android:layout_alignParentStart="true"        
    tools:layout="@layout/fragment_box" />

Расположение этих фрагментов:

 <ImageButton
    android:layout_width="197dp"
    android:layout_height="197dp"
    android:id="@+id/ibPress"
    android:layout_gravity="center" />

Итак, я регистрирую OnClickListener:

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view= inflater.inflate(R.layout.fragment_box, container, false);

    ImageButton imageButton= (ImageButton) view.findViewById(R.id.ibPress);
    imageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.i(LOG_TAG,this.toString());
           //how to know,wich button clicked?
           presenter.onButtonClick(...?);
        }
    });
    return view;
}

Итак, я хочу знать, с какого фрагмента была нажата кнопка? Нужно ли мне ссылаться на presenter.onButtonClick? На докладчике я хочу узнать, какая кнопка была нажата, а затем выполнить некоторую работу.

Спасибо!

2 ответа

Решение

Вы можете изменить свой presenter.onButtonClick() от presenter.onButtonClick(int fragmentId) или же presenter.onButtonClick(String fragmentTagName)Затем в этом методе с помощью switch case Вы можете выполнить действие на основе идентификатора или тега этого конкретного фрагмента.

Вы можете получить id текущего кликающего вида, используя getId().Смотрите код ниже.

imageButton.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
      switch(v.getId()) {
        case R.id.b1:
          // it was the first button
          break;
        case R.id.b2:
          // it was the second button
          break;
      }
  }
}

Пожалуйста, прочитайте документы для получения дополнительной информации.

Другие вопросы по тегам