如何知道点击了什么按钮?

时间:2016-03-21 18:29:52

标签: android android-fragments onclicklistener android-imagebutton

我创建了两个片段:

 <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 个答案:

答案 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了解详情。