将 ButtonArray 连接到 XML 按钮

Posted

技术标签:

【中文标题】将 ButtonArray 连接到 XML 按钮【英文标题】:Connecting ButtonArray to XML buttons 【发布时间】:2016-01-09 09:03:36 【问题描述】:

首先感谢您的帮助。 我正在创建一个计算器应用程序, 在 XML 文件中,我创建了按钮 [0-9] 现在我想把它们都放在按钮数组中

 int NumberOfButtons=10;

Button button[] = new Button[NumberOfButtons];

这是数组, 在尝试使用数组之前,我创建了每个按钮

 Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, mul, div, cancel,
        equal;

现在这是通过 findValueid 连接的按钮

 one = (Button) findViewById(R.id.button1);
    two = (Button) findViewById(R.id.button2);
    three = (Button) findViewById(R.id.button3);
    four = (Button) findViewById(R.id.button4);
    five = (Button) findViewById(R.id.button5);
    six = (Button) findViewById(R.id.button6);
    seven = (Button) findViewById(R.id.button7);
    eight = (Button) findViewById(R.id.button8);
    nine = (Button) findViewById(R.id.button9);
    zero = (Button) findViewById(R.id.button0);

如何节省处理能力并使用更少的代码? 像 FOR 函数 或者也许使用 While

谢谢大家!

【问题讨论】:

【参考方案1】:

您可以使用GridView 来制作。这样代码更少,可读性更高。

【讨论】:

任务需要按钮 :( 我知道。每个 gridView 的项目都是一个按钮,如 button1、button2...等。【参考方案2】:

您的代码已经非常简单并且可以快速执行。通常,每个按钮都需要像您一样编写 - 这使得计算器编写代码很痛苦。在这种情况下,我认为循环的使用不适用——不是为了提高效率。

现在您需要确定 onTouch() 事件的位置,以便为您的按钮放置和检测触摸事件。

@FireSun 的建议很有帮助。

【讨论】:

【参考方案3】:

试试这个。

int[] ids = 
    R.id.button1
    , R.id.button2
    , R.id.button3
    ...
    , R.id.button9


for (int id : ids) 
    findViewById(id).setOnClickListener(this);

如果你的按钮 id 有规则,试试这个。

for (int i = 0; i < numberOfButtons; i++) 
    String buttonId = "button" + i;
    int resourceId = getResources().getIdentifier(buttonId, "id", getPackageName());
    findViewById(resourceId).setOnClickListener(this);

【讨论】:

以上是关于将 ButtonArray 连接到 XML 按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Enter 键连接到提交按钮

如何通过按下连接到 piface 数字 2 上的终端的按钮来打印“Python 中的 Hello world”

苹果怎么连电脑传文件

如何在按下按钮之前激活按钮?

我无法将 TableViewCell 按钮连接到 TableViewController!如何将 TableViewCell 中的值连接到 TableViewController?

将按钮连接到任意功能