我还是Java编程的新手,所以也许有一个明显的答案,但我搜索了我的代码和网络,找不到这个问题的根源。我已经在我的应用程序的布局文件中创建了这个方法:
public void setNumLabels(char[] labels){
int niCC = getChildCount();
for(int c = 0;c < niCC; c++){
if(getChildAt(c) instanceof TableRow){
TableRow tr = (TableRow) getChildAt(c);
int trCC = tr.getChildCount();
for(int rc = 0;rc < trCC;rc++){
if(tr.getChildAt(rc) instanceof Button){
((Button) tr.getChildAt(rc)).setText(labels[c*3+rc],1);
}
}
}
}
我遇到的问题是编译器(显然Dalvik
)在setText中看到“标签[c * 3 + rc] ”作为int而不是char 。我错过了什么?现在,我已经将char []元素读入String并将其用于setText,但这看起来有点不合适。
答案 0 :(得分:1)
我错过了什么?
String
的实例是对象。 char[]
不是对象。 char
不是对象。 char[]
与String
几乎没有关系。 char
与String
的关系更少。
现在,我已将char []元素读入String并将其用于setText,但这看起来有点不合适。
我会删除char[]
并在Java中做一些有意义的事情。由于所有类型的问题(例如,Unicode的编码问题),char[]
几乎从未在Java中使用过。例如,对字符串数组使用String[]
。
答案 1 :(得分:1)
查看setText
类的Button
方法列表。
有:
setText(int, TextView.BufferType)
setText(int)
setText(CharSequence)
setText(CharSequence, TextView.BufferType)
setText(char[], int, int)
我不明白您尝试使用哪种方法。 如果我解释你想要做的正确,你可以用:
替换该调用((Button) tr.getChildAt(rc)).setText(labels, c*3+rc, 1);