Android Studio:具有相同ID的不同按钮?

时间:2016-01-29 12:35:10

标签: android

我有一个特殊按钮,出现在具有重置功能的同一活动的多个区域中。由于AS不允许我在具有相同ID名称的同一活动中声明该按钮的多个实例,因此我想知道是否可以以不同的方式重新创建该功能。

我现在拥有3个不同的按钮,名称为Reset,ID为reset1reset2reset3;

为了处理它们的使用,我只有一个类似于(伪)的开关语句:

switch(button){
  case reset1:
  case reset2:
  case reset3:
     doSomething();
     break;
}

对我而言,对所有这些按钮使用单个ID似乎更简单。为什么我不能这样做?有什么风险?我目前使用的方法有其他替代方法吗?

2 个答案:

答案 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。