我有一个特殊按钮,出现在具有重置功能的同一活动的多个区域中。由于AS不允许我在具有相同ID名称的同一活动中声明该按钮的多个实例,因此我想知道是否可以以不同的方式重新创建该功能。
我现在拥有3个不同的按钮,名称为Reset
,ID为reset1
,reset2
,reset3
;
为了处理它们的使用,我只有一个类似于(伪)的开关语句:
switch(button){
case reset1:
case reset2:
case reset3:
doSomething();
break;
}
对我而言,对所有这些按钮使用单个ID似乎更简单。为什么我不能这样做?有什么风险?我目前使用的方法有其他替代方法吗?
答案 0 :(得分:1)
您可以将相同的OnClickListener分配给所有三个按钮,而不是该switch语句:
OnClickListener listener = new OnClickListener() {
public void onClick(View view) {
doSomething();
}
}
findViewById(R.id.reset1).setOnClickListener(listener);
findViewById(R.id.reset2).setOnClickListener(listener);
findViewById(R.id.reset3).setOnClickListener(listener);
答案 1 :(得分:1)
在您的活动中创建一个方法,然后通过按钮的 onClick 属性为每个按钮引用该方法。像这样:
<Button
android:id="@+id/reset1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset"
android:onClick="onReset"/> //Check this
<Button
android:id="@+id/reset2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset"
android:onClick="onReset"/>
<Button
android:id="@+id/reset3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset"
android:onClick="onReset"/>
现在在MyActivity.java中创建onReset方法:
public void onReset(View v){
//do something.
}
请记住,该方法需要公开并将View作为参数。 如果出于其他目的不需要,您甚至不需要为这些按钮分配ID。