我的活动有26个按钮(字母表)。对于他们所有人我想拥有相同的onclick-listener。有没有其他方法可以为所有按钮设置“default-onlick-listener”,而无需通过button.setOnClickListener(...)
进行设置?
会很棒。
由于
答案 0 :(得分:2)
在布局中,您可以为每个按钮指定android:onClick
。此外,由于这只是另一个属性,您还可以在样式或主题中指定它,有效地设置所有这些属性。
将此作为主题的缺点是onClick将应用于所有视图。可能不是你想要的。所以,我建议只在每个按钮上指定android:onClick
。
另一种方法是创建一个从Button扩展的自定义视图,并在那里提供常见的onClick功能。
以下是使用android:onClick
方法的示例。在您的布局中,定义按钮并提供onClick值:
<Button
android:id="@+id/button1"
android:tag="a"
android:onClick="doSomething"
... />
<Button
android:id="@+id/button2"
android:tag="a"
android:onClick="doSomething"
... />
<Button
android:id="@+id/button3"
android:tag="b"
android:onClick="doSomething"
... />
您的活动将使用doSomething
方法:
public void doSomething(View v) {
// in here, we can branch off based on the ID or the tag.
switch (v.getId()) {
case R.id.button1:
// something
break;
case R.id.button2:
// something
break;
case R.id.button3:
// something
break;
}
if (v.getTag() != null && v.getTag().equals("a")) {
// do something for the button's tagged with 'a'
}
}
答案 1 :(得分:1)
尝试在布局xml中使用android:onClick =“OnClickListener”属性。
示例:
<Button
android:text="A"
android:id="@+id/ButtonA"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="MyOnClickListener">
</Button>