一个片段中多个按钮的java One OnClick处理程序
我有3个按钮在一个片段中,我想使用相同的点击事件。如何在一个片段内实现这一点
XML
<Button
安卓:id="@+id/btn_1"
安卓:onClick="btnClick_DoSomething"
安卓:text="@string/one"/>
<Button
安卓:id="@+id/btn_2"
安卓:onClick="btnClick_DoSomething"
安卓:text="@string/two"/>
<Button
安卓:id="@+id/btn_3"
安卓:onClick="btnClick_DoSomething"
安卓:text="@string/three"/>
Java
@Override
public void btnClick_DoSomething(View v) {
}
错误
@Override
(在片段Java类中)变为红色下划线,并返回以下错误
Annontations are not allowed here
我希望所有3个按钮的onClick事件都相同
# 1 楼答案
这里有一些误解。要覆盖单击事件,您的
Fragment
需要实现如下View.OnClickListener
接口:请注意,该方法的名称必须是
onCLick
,必须返回void,并接收View
作为要从接口重写的参数。在这种情况下,需要为片段中的每个按钮设置一个侦听器:在这个方法中,你可以控制哪个对象被它的ID点击
或者,您不需要重写该方法,因此请删除可以正常工作的涂鸦:
# 2 楼答案
您不需要编写@Override注释,因为您没有重写该方法。使用
在运行时,您将在该方法中得到一个回调
# 3 楼答案
您可以使用片段实现视图,而不是在xml布局文件中声明onClick方法。onClickListener接口,重写
onClick()
,并将所有3个按钮设置为如下btn.setOnClickListener(this)
。将所有3个按钮所需的行为放入onClick()
。所有3个按钮都有相同的行为(除非您在onClick()
中检查事件来自哪个按钮)# 4 楼答案
你想用什么方法来替代?有任何父类有方法
btnClick_DoSomething
?从布局XML设置单击侦听器时,不需要覆盖任何内容。只需确保将使用此布局的activity类中存在一个名称相同、返回类型为void、唯一参数为View的方法在同一个onClick处理程序中,区分不同视图中的点击的一般方法是通过id来识别它们
# 5 楼答案
您不需要使用XML,而是使用Java:
然后