Android SDK setText将char []元素与int混淆

时间:2011-02-03 20:21:11

标签: android android-widget

我还是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,但这看起来有点不合适。

2 个答案:

答案 0 :(得分:1)

  

我错过了什么?

String的实例是对象。 char[]不是对象。 char不是对象。 char[]String几乎没有关系。 charString的关系更少。

  

现在,我已将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);