为了账号安全,请及时绑定邮箱和手机立即绑定

Android-为每个按钮自动查找并创建一个setOnClickListener

Android-为每个按钮自动查找并创建一个setOnClickListener

米琪卡哇伊 2021-03-31 15:13:39
我有数十个按钮,每个按钮我想要执行以下操作:Button abcdefg = (Button) this.findViewById(R.id.abcdefg);        abcdefg.setOnClickListener(new OnClickListener(){            public void onClick(View v) {                audiotoplay = "abcdefg";                playAudio(audiotoplay);            }        });在这种情况下,是否有比为每个按钮复制和粘贴此代码块并仅替换abcdefg为每个按钮ID更为简单的方法来对每个按钮执行此操作?
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

在strings.xml中创建一个字符串数组,其中包含按钮的id作为字符串,例如:


<string-array name="buttonids">

    <item>abc</item>

    <item>def</item>

    <item>ghi</item>

</string-array>

然后在您的活动中,获取此数组,并为每个字符串ID获取带有按钮的整数ID getIdentifier()。

然后通过findViewById()获取对每个按钮的引用并设置侦听器:


String[] buttonids = getResources().getStringArray(R.array.buttonids);

for (String buttonid : buttonids) {

    final String name = buttonid;

    int id = getResources().getIdentifier(name, "id", getPackageName());

    Button button = findViewById(id);

    button.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            audiotoplay = name;

            playAudio(audiotoplay);

        }

    });

}

我假设像您的示例代码中一样,您将把每个按钮的字符串ID分配给变量audiotoplay。

如果您在应用中添加或删除按钮,则唯一要做的更改就是从中的数组添加或删除其字符串ID strings.xml。


查看完整回答
反对 回复 2021-04-14
  • 3 回答
  • 0 关注
  • 206 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信