我正在尝试将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'”但是我不确定它是什么替代它或者它有一个。
答案 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接口。但是它无所不能。