Как узнать, какая кнопка нажата?
Я создаю два фрагмента:
<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;
}
}
}
Пожалуйста, прочитайте документы для получения дополнительной информации.