Android:许多按钮,一个 OnClickListener?

标签 android button onclick

我目前正在开发一个 Android 应用程序,有几个问题。

1) 在我的应用程序中,有一个 Battery Mod 部分。他们将有超过 50 个按钮。所以,不要做类似的事情:

 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;
  }
}  
}

有没有更简单的方法来做到这一点?当您单击电池模组按钮时,它会显示模组的图像以及安装它的选项。除了图像,每个 mod 都是一样的。如果没有更简单的方法。

最佳答案

标签属性是所有 View 的一个有用组件,但为此目的并未过多讨论。您可以将 View 的标签设置为任何对象:

Object foo = new Object();
button1.setTag(foo);

您可以使用它轻松地将标签分配给图像的名称,或者可能是 Drawable 资源的 id。然后对所有这些按钮使用一个 onClick 方法,并简单地解压标签以确定应该如何使用它:

public void onClick(View v)
{
    //any button was clicked. Now determine what to do using the tag.

    Object tag = v.getTag();
    //TODO: use tag.


}

关于Android:许多按钮,一个 OnClickListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14944784/

相关文章:

java - 可以用java代码完成这个静态按钮吗?

android - 按钮不透明度/透明度

php - ajax onclick 命令拉取过时的数据

onclick - 将子事件暴露给父事件

c# - 是否可以保持统一激活脚本?

java - 为什么我的公共(public)变量显示为 "' 这'不可用”?

android - CMake交叉编译包 : how to set linker path to find compiler support library?

java - 来自 java 的 HTTP POST 作为 GET 到达服务器

wpf - 禁用 WPF 中的按钮?

javascript - 组件加载时触发reactjs onClick事件