如何进行多个按钮和OnClickListeners

use*_*705 7 android button

Button我的布局XML文件中有16 秒(数字,加号,减号等).

我想知道如何检查按下了哪个按钮.

我的想法是,我将为每个按钮使用onClick()方法,但这种方法有点不切实际,因为我将有16个这样的onClick()方法每个按钮一个.

有更优雅的方式吗?

use*_*579 19

您可以在实现OnClickListener的单个类中处理它们,或者如果您愿意,可以在活动类中处理它们...

import android.view.View.OnClickListener;

   public class MyActivity extends Activity implements OnClickListener {

      @Override public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         Button buttonA = (Button) findViewById(R.id.buttonA);    
         buttonA.setOnClickListener(this);
         Button buttonB = (Button) findViewById(R.id.buttonB); 
         buttonB.setOnClickListener(this);
      }

   //etc... etc...

   public void onClick(View v) {

      switch (v.getId()) {
         case R.id.buttonA: 
          // do something
          break;
         case R.id.buttonB:
          // do something else
          break;
      }
   }

}
Run Code Online (Sandbox Code Playgroud)


Hei*_*upp 6

您可以使用一个未定义为匿名内部类的处理程序,但是在单独的类中.onClick()将传入视图,您可以从中进行选择.

public class MyActivity implements OnClickListener {
    public void onClick(View v) {
       Button b = (Button)v;
       // do what you want 
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

然后在你的layout.xml中为每个按钮添加

<Button android:id=".."
        android:onClick="onClick"
Run Code Online (Sandbox Code Playgroud)


Vla*_*nov 2

您不必在点击侦听器上提及 16。创建一个并将其附加到每个按钮。onClick() 方法获取一个 View 作为参数。这个视图就是你的按钮。只需检查它的 id 或名称即可。