gpt4 book ai didi

android - 如何为 Android fragment 中的多个按钮定义 setOnTouchListener

转载 作者:行者123 更新时间:2023-12-05 00:14:22 25 4
gpt4 key购买 nike

我有一个包含多个按钮的 fragment 。我为每个按钮创建了一个 setOnTouchListener,如下面的代码。

Button btnOne = (Button) view.findViewById(R.id.button_one);
Button btnTwo = (Button) view.findViewById(R.id.button_two);

btnOne.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
myMethod(btnOne);
return false;
}
});

btnTwo.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
myMethod(btnTwo);
return false;
}
});

我如何创建一个通用方法 setOnTouchListener 以在所有按钮中使用?我想要这样的东西:

btnOne.method();
btnTwo.method();
btnThree.method();
...

最佳答案

您可以使用相同的 OnTouchListener 并使用 view.getId() 区分不同的 View :

View.OnTouchListener listener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v.getId() == R.id.button_one) {
// do your thing
}
else if (v.getId() == R.id.button_two) {
// do your thing
}
return false;
}
};

由于您似乎为两个按钮调用了相同的方法 myMethod(Button) 您可以将其缩短:

View.OnTouchListener listener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
myMethod(v);
return false;
}
};

myMethod 可以安全地将 View v 转换为 Button 对象 ((Button)v) 以使用 Button 特定对象。

请注意,您可能应该在 onTouch 中返回 true 而不是 false 以使用触摸事件。

关于android - 如何为 Android fragment 中的多个按钮定义 setOnTouchListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31946268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com