我创建了两个片段:
<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
?
在演示者,我想知道按下了什么按钮然后做了一些工作。
谢谢!
答案 0 :(得分:3)
您可以修改presenter.onButtonClick()
presenter.onButtonClick(int fragmentId)
或presenter.onButtonClick(String fragmentTagName)
然后在使用switch case
的方法中,您可以根据特定片段的id或标记执行操作。
答案 1 :(得分:1)
您可以使用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;
}
}
}
请阅读docs了解详情。