android xml引用不适用于带有静态数组的开关和大小写

标签 android xml reference static for-loop

我试图通过循环浏览我的 xml 中的按钮(因为我有很多按钮)来让我的生活变得更轻松。为什么这不起作用?

Button bf[];
public static final int[] Buttons = { R.id.b1, R.id.b2, R.id.b3, R.id.b4,
        R.id.b5, R.id.b6, R.id.b7, R.id.b8, R.id.b9, R.id.bBack,
        R.id.bClearAll, R.id.bClear };

我有一个 static final int 包含我的一些按钮,它在标题中列出。 在我的 onCreate 方法中,我设置了我的按钮:

for (int i = 1; i < 10; i++) {

        bf[i] = (Button) findViewById(Buttons[i - 1]);
        bf[i].setOnClickListener(this);
    }

很好很简单吧?但是当我尝试在 switch 和 case 中引用它们时(在我实现的 onClickListener 方法中,我遇到了问题:

for (int i = 1; i < 10; i++) {
        case Buttons[i-1]:
            Toast.makeText(this, bf[i].getText(), Toast.LENGTH_SHORT).show();
        break;
    }

这行不通,所以我只尝试了一个引用:

switch (v.getId()) {
    case Buttons[0]:
        Toast.makeText(this, bf[1].getText(), Toast.LENGTH_SHORT).show();
        break;

哪个也不起作用?!?!请帮忙?

最佳答案

v 是您在 onClickListener 中的 View ,对吗? 你为什么不使用:

Button b = (Button) v;
Toast.makeText(this, b.getText(), Toast.LENGTH_SHORT).show();

其他几点:

  • 您没有发布完整的代码,但我想您可以将 Buttons 数组更改为私有(private)。
  • 可能你甚至不需要 bf[]

编辑:另外,我建议使用这个 for 循环循环遍历所有按钮,使其更加灵活:

for (int i : Buttons) {
    Button b = findViewById(i);
    b.setOnClickListener(myClickListener);
}

关于android xml引用不适用于带有静态数组的开关和大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154418/

相关文章:

android - 手机进入休眠模式时丢失数据 [3G/WIFI] 连接

android - 在android中使用无障碍服务检测 "shut-down/reboot menu"?

javascript - 通过缓存的 HTML 将 XML 配置文件传递给 JavaScript

java - 预期为 : reference. 发现为 : double. 参数错误。怎么了?

java - 我不断收到致命异常 : main

android - 不可见的 Ndef 消息

XML 到 excel 错误

java - 在 Java 中设置为相等 : by value or reference?

Java引用变量管理?

java - 为什么尝试将 SurfaceView 与相机关联时抛出 `UnsupportedOperationException` ?