我在Fragment中有一个列表视图。
在我的listitem布局中包含三个按钮,例如:
<LinearLayout
android:id="@+id/back"
android:layout_width="match_parent"
android:layout_height="@dimen/msg_item_h">
<Button
android:layout_width="@dimen/msg_delete_btn_w"
android:layout_height="@dimen/msg_delete_btn_w"
android:id="@+id/btnDelete"
android:onClikc="onDeleteClick"
android:text="delete" />
<Button
android:layout_width="@dimen/msg_delete_btn_w"
android:layout_height="@dimen/msg_delete_btn_w"
android:id="@+id/btnAdd"
android:onClikc="onAddClick"
android:text="add" />
<Button
android:layout_width="@dimen/msg_delete_btn_w"
android:layout_height="@dimen/msg_delete_btn_w"
android:id="@+id/btnEdit"
android:onClikc="onEditClick"
android:text="edit" />
我想在我的片段中处理事件onDeleteClick,onEditClick和onAddClick。 但每次fragmentActivity都得到了这个事件。
有没有办法解决它?
答案 0 :(得分:0)
您可以在片段中执行以下操作:
view.findViewById(R.id.btnDelete).setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
//Do your stuff here
}
});
如果你这样做,你将不再需要android:onClick="onDeleteClick"
。
答案 1 :(得分:0)
以下解决方案处理onClick事件,适用于Activity和Fragments:
public class YourFragmentClass extends Fragment implements OnClickListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_xml_file, container, false);
Button delete = (Button) view.findViewById(R.id.btnDelete);
delete.setOnClickListener(this);
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnDelete:
// Do something here...
break;
}
}
}
答案 2 :(得分:0)
android:onClick
将事件传递给Context,因此这是不可能的。
根据View文档:
单击视图时要调用的此View上下文中的方法的名称。此名称必须对应于只接受View类型的一个参数的公共方法。例如,如果指定android:onClick =“sayHello”,则必须声明上下文的公共void sayHello(View v)方法(通常是您的Activity)。