android - 有没有一种使用for循环初始化编号为1-10的多个按钮的快速方法? (安卓应用程序)

标签 android android-view

我有一个初始化方法,它使用 findViewById(R.id.pin1) 找到每个按钮,然后设置一个 onclick 方法,该方法将方法写入蓝牙输出流。

    Button myButton = (Button) findViewById(R.id.pin1);
    myButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String msg = "1".toString();
            try {
                mmOutStream.write(msg.getBytes());
            } catch (IOException e) {
                error();
            }
        }
    });

从字面上看,我所做的只是将 1 更改为 2,依此类推。所以下一个代码段是:

    Button myButton = (Button) findViewById(R.id.pin2);
    myButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String msg = "2".toString();
            try {
                mmOutStream.write(msg.getBytes());
            } catch (IOException e) {
                error();
            }
        }
    });

我尝试了一些方法,比如制作一个像 string pinButton = "pin"+ i.toString() 这样的字符串,然后是 R.id.pinButton,但它不起作用。 (也就是说,我在一个 forloop 中,我用它包围了代码)

最佳答案

是的,您可以切换按钮id并为每个按钮调用相同的onClick()在 xml 中 然后,您只需根据单击的 id 更改 msg 变量

@Override
    public void myClick(View v) {
      String msg = "";
       switch (v.getId())
       {
             case (R.id.button1):
              msg = "1";
              break;
              case (R.id.button2):
              msg = "2";
             break
      }
        try {
            mmOutStream.write(msg.getBytes());
        } catch (IOException e) {
            error();
        }
    }
});

要在 xml 中设置 onClick(),只需对每个 Button 执行此操作即可

<Button
    ...
    android:onClick="myClick"/> // name this whatever you want the method to be called and do the same for each Button

此外,您不需要在 msg 上调用 toString(),因为它已经是一个 String

关于android - 有没有一种使用for循环初始化编号为1-10的多个按钮的快速方法? (安卓应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16350168/

相关文章:

android - 什么被认为是 "View"呢?

java - 我如何/在哪里可以 "stash"/在我的应用程序中保存数据?

java - 如何在android中选择和取消选择图像?

android - 没有 NEON 支持的 OpenCV4android armeabiv7 死于致命信号 4 (SIGILL)

Android:如何为 LinearLayout 绘制边框

java - 如何在 android 中构建和使用 ffmpeg

android - Activity 基类?

java - 通过蓝牙打印机打印pdf文件

android - 如何在 android listview 中从 json 动态创建 View ?

android - 如何调试android UI样式