如何更改多个按钮内的文本?

时间:2015-02-01 22:21:12

标签: android button foreach android-framelayout

我正在尝试将c#windows窗体程序转换为android,而我正处于最后一块似乎无法找到翻译的部分。

我在framelayout中有9个按钮,我需要通过迭代或一次抓取所有内容来删除文本。

在我原来的程序中,我使用了这样的foreach循环:

foreach(control boardPosition in gameBoard)
{
    ((Button) boardPosition).Text ="";
    ((Button) boardPosition).ForeColor = Color.Black;
}

这是我到目前为止所得到的

FrameLayout GameBoard = (FrameLayout) findViewById(R.id.GameBoard)

for(Button boardPosition : GameBoard)
{
    boardPosition.setText("");
    boardPosition.setTextColor(Color.BLACK);        
}

我收到的错误只是“foreach不适用于类型'android.widget.Framelayout'”但是我不确定它是什么替代它或者它有一个。

1 个答案:

答案 0 :(得分:0)

要循环的对象必须实现可迭代的接口。 Java必须知道它可以以某种形式进行迭代。 FrameLayout不可迭代。它并不知道你的意图是你有一系列按钮。

为了循环布局中的每个按钮,我会使用这样的东西:

    FrameLayout layout = (FrameLayout) view.findViewById(R.id.frame);
    int children = layout.getChildCount();
    for (int i = 0; i < children; i++) {
        View view = layout.getChildAt(i);
        if (view instanceof Button) {
            ((Button) view).setText("");
            ((Button) view).setTextColor(Color.BLACK);
        }
    }

如果您仍想使用foreach循环,则必须扩展FrameLayout类并实现Iterable接口。但是它无所不能。